Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    variazione script menu a tendina

    Chiedo ancora un aiuto al forum Javascript, linguaggio che per quanto mi sforzi rimane ancora un delicatissimo sconosciuto.

    Ho trovato uno script per la gestione di tre menu a tendina in cascata e che popolo tranquillamente tramite php, il tutto funziona a meraviglia.

    Avrei bisogno di una variazione (chiaramente ho fatto una lungaaaaaaaa serie di tentativi con risultati nulli) nel senso che dopo aver selezionato un menù lo script riporta automaticamente nel menù successivo la dicitura '-Seleziona-' mentre mi farebbe piacere avere:

    dopo la prima selezione : -Seleziona cilindrata-
    e dopo la seconda selezione : -Seleziona modello e anno-

    Grazie per eventuali suggerimenti

    riporto lo script

    codice:
    <script language="JavaScript" type="text/javascript">
    
    
    <!--
    // This script supports an unlimited number of linked combo boxed
    // Their id must be "combo_0", "combo_1", "combo_2" etc.
    // Here you have to put the data that will fill the combo boxes
    // ie. data_2_1 will be the first option in the second combo box
    // when the first combo box has the second option selected
    
    // first combo box
    
         data_1 = new Option("1");
    
    // second combo box
    
         data_1_1 = new Option("1000");
         data_1_2 = new Option("1100");
         data_1_3 = new Option("1400");
    
    // third combo box
    
         data_1_1_1 = new Option("X","PS001.htm");
         data_1_1_2 = new Option("XL","PS002.htm");
         data_1_1_3 = new Option("CX","PS003.htm");
    
    // other parameters
    
        displaywhenempty=""
        valuewhenempty=-1
    
        displaywhennotempty="-Seleziona-"
        valuewhennotempty=0
    
    function change(currentbox) {
    	numb = currentbox.id.split("_");
    	currentbox = numb[1];
    
        i=parseInt(currentbox)+1
    
    // I empty all combo boxes following the current one
    
        while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
               (document.getElementById("combo_"+i)!=null)) {
             son = document.getElementById("combo_"+i);
    	     // I empty all options except the first one (it isn't allowed)
    	     for (m=son.options.length-1;m>0;m--) son.options[m]=null;
    	     // I reset the first option
    	     son.options[0]=new Option(displaywhenempty,valuewhenempty)
    	     i=i+1
        }
    
    // now I create the string with the "base" name ("stringa"), ie. "data_1_0"
    // to which I'll add _0,_1,_2,_3 etc to obtain the name of the combo box to fill
    
        stringa='data'
        i=0
        while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
               (document.getElementById("combo_"+i)!=null)) {
               eval("stringa=stringa+'_'+document.getElementById(\"combo_"+i+"\").selectedIndex")
               if (i==currentbox) break;
               i=i+1
        }
    
    // filling the "son" combo (if exists)
    
        following=parseInt(currentbox)+1
    
        if ((eval("typeof(document.getElementById(\"combo_"+following+"\"))!='undefined'")) &&
           (document.getElementById("combo_"+following)!=null)) {
           son = document.getElementById("combo_"+following);
           stringa=stringa+"_"
           i=0
           while ((eval("typeof("+stringa+i+")!='undefined'")) || (i==0)) {
    
           // if there are no options, I empty the first option of the "son" combo
    	   // otherwise I put "-select-" in it
    
    	   	  if ((i==0) && eval("typeof("+stringa+"0)=='undefined'"))
    	   	      if (eval("typeof("+stringa+"1)=='undefined'"))
    	   	         eval("son.options[0]=new Option(displaywhenempty,valuewhenempty)")
    	   	      else
    	             eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)")
    	      else
                  eval("son.options["+i+"]=new Option("+stringa+i+".text,"+stringa+i+".value)")
    	      i=i+1
    	   }
           //son.focus()
           i=1
           combostatus=''
           cstatus=stringa.split("_")
           while (cstatus[i]!=null) {
              combostatus=combostatus+cstatus[i]
              i=i+1
              }
           return combostatus;
        }
    }
    
    
    //-->
    </script> 
    
    
    ...
    ...
    ...
    
    
           <select name="combo0" id="combo_0" onChange="change(this);" style="width:200px;" class="ComboMarca">
     <option value="0">Selezione Marca</option>
     <option value="01">Fiat</option>
     <option value="02">LanciaFiat</option>
     <option value="01">Alfa Romeo</option>

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    cambia
    displaywhennotempty="-Seleziona-"
    in
    displaywhennotempty=['-Seleziona-','-Seleziona cilindrata-','-Seleziona modello e anno-']

    e
    eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)")
    in
    eval("son.options[0]=new Option(displaywhennotempty[following],valuewhennotempty)")

    ciao

  3. #3
    Ti ringrazio veramente molto, funziona ed è molto più chiaro.

    Avevo immaginato che si trattasse di array ma le impostavo e gestivo con logica php...

    ciao

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.