Mediante questo codice, riesco ad ottenere l'effetto JS di cambio e popolamento della seconda combo, in funzione della prima:
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.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>
Come si può sistemare questa cosa?
Grazie anticipatamente.