Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    87

    [JavaScript] autoselezione select

    Ciao a tutti. Quanto cerco di fare è di non dubbia difficoltà di spiegazione.

    Utilizzo questo codice per abbinare paesi e vie:
    codice:
    <script type="text/javascript">
    var arrPaesi, arrBoffalora, arrBernate
    arrBoffalora = ["Ariosto", "Calderari"]
    arrBernate = []
    arrBoffaloraID = [1, 2]
    arrBernateID = []
    
    arrPaesi = [arrBoffalora, arrBernate]
    arrPaesiID = [arrBoffaloraID, arrBernateID]
    
    function handleChange(newDisplay) {
      var PaeseSelect, ViaSelect, NumEntries, i
      PaeseSelect = document.frm.paesi
      ViaSelect = document.frm.vie
      
      for (i = ViaSelect.length; i > 0; i--) // cancella la list box
      {
        ViaSelect.options[i-1] = null
      }
    
      // opzione commento sulla list box
      ViaSelect.options[0] = new Option("-- Seleziona Via --",0)
    
      // se un paese e' selezionato, aggiunge le sue vie nella list box
      if (newDisplay >= 0)
      {
        NumEntries = arrPaesi[newDisplay].length
        for (i = 1; i <= NumEntries; i++) {
          ViaSelect.options[i] = new Option((arrPaesi[newDisplay])[i-1], (arrPaesiID[newDisplay])[i-1])
        }
      }
      ViaSelect.selectedIndex = 0
    }
    </script>
    (da notare che vengono popolati da un DB in PHP in un modo che ho creato abbastanza strano!)

    Volevo usare questo script in una pagina per la modifica dei dati personali: vengono infatti passati, dalla pagina solo stampata, gli ID di paese e via del DB (ma posso passare direttamente anche le "scritte") alla pagina di modifica, dove vorrei che venissero direttamente selezionate la select del paese e della via giuste.

    Non so come fare...
    Riuscite a darmi una mano!?
    GRAZIE!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il meccanismo coinvolge anche il server... quando scorri il db per creare l'array devi confrontare l'id con quello inviato dal client ed annotarti l'indice degli elementi corrispondente.

    poi aggiungi lo script:

    <script>
    function posiziona() {
    document.nomeForm.nomeSelect.selectedIndex=<? echo $indice ?>;
    }
    </script>

    <body onload="posiziona();"</script>

    Spero che l'esempio sia sufficiente... ma non conosco PHP

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    87
    Ciao, scusa, vedo solo ora l'appunto che mi hai fatto...
    Ora provo e ti so dire...

    Hmm...no! o meglio...l'idea è giusta, ma...vorrei fare che mi "selezionasse" nella casella, NON per indice, ma per valore...è possibile?
    Cioè:
    l'ID paese nel DB supponiamo sia 1.
    Nella select faccio stampare i dati in ordine alfabetico, quindi può essere che l'indice della casella sia maggiore di 1.
    Riesco a dirgli "seleziona dove il valore è 1"?!
    Grazie!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    87
    Sono appena riuscito a sistemare il codice!!!!
    Grande, mi hai dato un'ottimo spunto!

    Posto il codice per chi volesse utilizzarlo! Logico che mi si riempie dinamicamente e il codice originale è decisamente più lungo!!!

    Comunque...riesci a vedere come posso ottimizzarlo un po'?!
    codice:
    <script type="text/javascript">
    var arrPaesi, paesiID, arrBernate, arrBoffalora
    arrBernate = []
    arrBoffalora = ["Ariosto", "Calderari"]
    arrBernateID = []
    arrBoffaloraID = [1, 2]
    arrPaesi = [arrBernate, arrBoffalora]
    paesiID = [2, 1]
    arrPaesiID = [arrBernateID, arrBoffaloraID]
    function handleChange(newDisplay) {
      var PaeseSelect, ViaSelect, NumEntries, i
      PaeseSelect = document.frm.paesi
      ViaSelect = document.frm.vie
      
      for (i = ViaSelect.length; i > 0; i--) { // cancella la list box
        ViaSelect.options[i-1] = null
      }
    
      // opzione commento sulla list box
      ViaSelect.options[0] = new Option("-- Seleziona Via --",0)
    
      // se un paese e' selezionato, aggiunge le sue vie nella list box
      if (newDisplay >= 0) {
        NumEntries = arrPaesi[newDisplay].length
        for (i = 1; i <= NumEntries; i++) {
          ViaSelect.options[i] = new Option((arrPaesi[newDisplay])[i-1], (arrPaesiID[newDisplay])[i-1])
        }
      }
      ViaSelect.selectedIndex = 0
    }
    
    function posiziona() {
      var a=0, idP, idV, Pselect, Vselect
      Pselect = 1, Vselect = 30
      for(a = 0; a < paesiID.length; a++) {
        if(paesiID[a] == Pselect)
          idP = a + 1
      }
      document.frm.paesi.selectedIndex = idP
      handleChange(document.frm.paesi[idP].value)
      for(a = 0; a < arrPaesiID[(idP - 1)].length; a++) {
        if((arrPaesiID[(idP - 1)])[a] == Vselect)
          idV = a + 1
      }
      document.frm.vie.selectedIndex = idV
    }
    </script>
    Grazie!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.