Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Select dinamiche.

  1. #1

    Select dinamiche.

    Mediante questo codice, riesco ad ottenere l'effetto JS di cambio e popolamento della seconda combo, in funzione della prima:

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
      <script language="javascript">
        var arrDetrazioni = new Array();
        
        	arrDetrazioni[0] = new Array;
        	arrDetrazioni[0][0] = "Con detrazioni";
        	arrDetrazioni[0][1] = new Array();
        		arrDetrazioni[0][1][0] = "Tutti";
        	  arrDetrazioni[0][1][2] = "Da verificare";
        		arrDetrazioni[0][1][4] = "Verificati";		
        		arrDetrazioni[0][1][6] = "Inviati";
        	arrDetrazioni[1] = new Array;
        	arrDetrazioni[1][0] = "Senza detrazioni";
        	arrDetrazioni[1][1] = new Array();
        		arrDetrazioni[1][1][0] = "Tutti";  
    
    function changeAnagrafica(myForm){	
    	var j = 0; 	    
    	
        selAnagrafica = myForm.anagrafica.options[myForm.anagrafica.selectedIndex].value;
    
        pulisciCombo(myForm.stato);
        
        //ciclo che valorizza la combo "Stato" a seconda del valore impostato nella combo "Anagrafiche"	
    	if ((selAnagrafica != "") && (selAnagrafica != null)) {
    		j++;	
    		//Ciclo sugli STATI
    		for (var i=0; i<arrDetrazioni.length; i++) {
    			campoAnagrafica = arrDetrazioni[i][0];
    			if (campoAnagrafica == selAnagrafica){				
    			    var y = 0;	 
    			    //Ciclo sui TIPI
    			    while (arrDetrazioni[i][1][y] != null) {
    			    	campoStatoWrite = arrDetrazioni[i][1][y];
      					myForm.stato[j] = new Option(campoStatoWrite, campoStatoWrite);
    	  				j++;
    		  			y = y + 2;
    			    }    
    			}	
    		}
    	}	
    }
    
    function writeComboStato(myForm) {
    
    	var selAnagrafica = myForm.anagrafica.value;
    	var selStato = "Da verificare";
    
        //Ciclo sugli STATI
    	for (var i=0; i<arrDetrazioni.length; i++) {
    		campoAnagraficaWrite = arrDetrazioni[i][0];
    		if (campoAnagraficaWrite == selAnagrafica){			
    		    var y = 0;	 
    	        //Ciclo sui TIPI
    		    while (arrDetrazioni[i][1][y] != null) {
    			    campoStatoWrite = arrDetrazioni[i][1][y];
    				if (selStato != "") {
    					if (campoStatoWrite == selStato){
    					    document.write('<OPTION selected value="' + campoStatoWrite + '">' + campoStatoWrite);
    					} else {
    						document.write('<OPTION value="' + campoStatoWrite + '">' + campoStatoWrite);
    					}						
    				} else {	
    				    if (campoStatoWrite == selStato){
    				    	document.write('<OPTION selected value="' + campoStatoWrite + '">' + campoStatoWrite);		
    					}else {
    						if (campoStatoWrite == "Da verificare") {
    							document.write('<OPTION selected value="' + campoStatoWrite + '">' + campoStatoWrite);
    						} else {
    							document.write('<OPTION value="' + campoStatoWrite + '">' + campoStatoWrite);
    						}	
    					}
    				}	
    				y = y + 2;
    			}
    		}
    	}			
    }	
    
    //al cambio della scelta si ripuliscono le combo
    function pulisciCombo(sel){
        for (var x = sel.options.length-1; x >=0; x--) {
        	sel.options[x] = null;
    	}
    }
      </script>
    
      </head>
      <body>
        <FORM NAME="frmCerca" METHOD="post" ACTION="">  
          <table border="1" align="center" cellspacing="0" cellpadding="0">
            <tr>
              <td>
    						<SELECT name="anagrafica" tabindex="3" onChange="changeAnagrafica(document.frmCerca);">
    							<OPTION value="Con detrazioni" selected>Con detrazioni</OPTION>
    							<OPTION value="Senza detrazioni" >Senza detrazioni</OPTION>
    						</SELECT>
              </td>                      
            </tr>
            <tr><td></td></tr>
            <tr>
    					<td>
    						<SELECT name="stato" tabindex="8" id="cmbStato">
    							<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    								writeComboStato(document.frmCerca)
    							</SCRIPT>
    						</SELECT>							
    					</td>        
            </tr>
          </table>
        </FORM>    
      </body>
    </html>
    Ora il mio problema è che se seleziono nella prima combo il valore "Senza detrazioni", vorrei che la seconda combo, si posizionasse direttamente su "Tutti", senza darmi l'item vuoto ed essere lei stessa vuota.
    Come si può sistemare questa cosa?

    Grazie anticipatamente.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  2. #2
    Ci ho smanettato questo pomeriggio e sono riuscito nell'intento.

    Adesso si propone il problema inverso, ovvero se seleziono nella prima combo la scelta "Con detrazioni", vorrei che la seconda combo si riempisse con i quattro item previsti, ma che la stessa si posizionasse sull'item il cui valore testuale è "Da verificare".

    Il codice della pagina è il seguente:

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
      <script language="javascript">
        var arrDetrazioni = new Array();
        
        	arrDetrazioni[0] = new Array;
        	arrDetrazioni[0][0] = "Con detrazioni";
        	arrDetrazioni[0][1] = new Array();
        		arrDetrazioni[0][1][0] = "Tutti";
        	  arrDetrazioni[0][1][2] = "Da verificare";
        		arrDetrazioni[0][1][4] = "Verificati";		
        		arrDetrazioni[0][1][6] = "Inviati";
        	arrDetrazioni[1] = new Array;
        	arrDetrazioni[1][0] = "Senza detrazioni";
        	arrDetrazioni[1][1] = new Array();
        		arrDetrazioni[1][1][0] = "Tutti";  
    
    function changeAnagrafica(myForm){	
    	var j = 0; 	    
    	var conta = 0;
    	
        selAnagrafica = myForm.anagrafica.options[myForm.anagrafica.selectedIndex].value;
    
        pulisciCombo(myForm.stato);
        
        //ciclo che valorizza la combo "Stato" a seconda del valore impostato nella combo "Anagrafiche"	
    	if ((selAnagrafica != "") && (selAnagrafica != null)) {
    		j++;	
    		//Ciclo sugli STATI
    		for (var i=0; i<arrDetrazioni.length; i++) {
    			campoAnagrafica = arrDetrazioni[i][0];
    			if (campoAnagrafica == selAnagrafica){				
    			    var y = 0;	 
    			    //Ciclo sui TIPI
    			    while (arrDetrazioni[i][1][y] != null) {
    			    	campoStatoWrite = arrDetrazioni[i][1][y];
                if (campoAnagrafica = "Senza detrazioni") {
                  if (conta == 0){
                    j--; 
                    conta = conta + 1;
                    myForm.stato[j] = new Option(campoStatoWrite, campoStatoWrite);
                  }
                }
      					myForm.stato[j] = new Option(campoStatoWrite, campoStatoWrite);
    	  				j++;
    		  			y = y + 2;
    			    }    
    			}	
    		}
    	}	
    }
    
    function writeComboStato(myForm) {
    
    	var selAnagrafica = myForm.anagrafica.value;
    	var selStato = "Da verificare";
    
        //Ciclo sugli STATI
    	for (var i=0; i<arrDetrazioni.length; i++) {
    		campoAnagraficaWrite = arrDetrazioni[i][0];
    		if (campoAnagraficaWrite == selAnagrafica){			
    		    var y = 0;	 
    	        //Ciclo sui TIPI
    		    while (arrDetrazioni[i][1][y] != null) {
    			    campoStatoWrite = arrDetrazioni[i][1][y];
    				if (selStato != "") {
    					if (campoStatoWrite == selStato){
    					    document.write('<OPTION selected value="' + campoStatoWrite + '">' + campoStatoWrite);
    					} else {
    						document.write('<OPTION value="' + campoStatoWrite + '">' + campoStatoWrite);
    					}						
    				} else {	
    				    if (campoStatoWrite == selStato){
    				    	document.write('<OPTION selected value="' + campoStatoWrite + '">' + campoStatoWrite);		
    					}else {
    						if (campoStatoWrite == "Da verificare") {
    							document.write('<OPTION selected value="' + campoStatoWrite + '">' + campoStatoWrite);
    						} else {
    							document.write('<OPTION value="' + campoStatoWrite + '">' + campoStatoWrite);
    						}	
    					}
    				}	
    				y = y + 2;
    			}
    		}
    	}			
    }	
    
    //al cambio della scelta si ripuliscono le combo
    function pulisciCombo(sel){
        for (var x = sel.options.length-1; x >=0; x--) {
        	sel.options[x] = null;
    	}
    }
      </script>
    
      </head>
      <body>
        <FORM NAME="frmCerca" METHOD="post" ACTION="">  
          <table border="1" align="center" cellspacing="0" cellpadding="0">
            <tr>
              <td>
    						<SELECT name="anagrafica" tabindex="3" onChange="changeAnagrafica(document.frmCerca);">
    							<OPTION value="Con detrazioni" selected>Con detrazioni</OPTION>
    							<OPTION value="Senza detrazioni" >Senza detrazioni</OPTION>
    						</SELECT>
              </td>                      
            </tr>
            <tr><td> </td></tr>
            <tr>
    					<td>
    						<SELECT name="stato" tabindex="8" id="cmbStato">
    							<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    								writeComboStato(document.frmCerca)
    							</SCRIPT>
    						</SELECT>							
    					</td>        
            </tr>
          </table>
        </FORM>    
      </body>
    </html>
    Come modifico per ottenere questo effetto?

    Grazie.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    Nessuno mi sa dare una dritta? :rollo:
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.