Joomla.it Forum
Non solo Joomla... => Sviluppo => : rushseeker 06 Dec 2010, 22:24:01
-
Ho creato due dropdown correlate in un form.
Apparentemente funziona: In realtā mi sembra ci sia un bug:
Spiego brevemente il codice:
clicco su una combo che ha id=select_29, contiene le provincie.
select_39 č la select che conterrā tutti i CAP una volta scelta la provincia.
L'evento onChange scatena la funzione popolaCap().
All'interno di popolaCap() prima creo un array, il cui nome č cap, che conterrā l'insieme di tutti i cap per quella provincia.
Poi svuoto la select_39 ( qui sorge il problema ) e poi la ripopolo con il contenuto dell'array.
Problema: ho notato che quando viene chiamata la funzione svuotamento, mi capita di avere
da un certo indice in poi le option come undefined, anche se presenti nel DropDown con id=select_39. Qual'č il motivo?
function svuotaOption(op, lunghezza){
alert("SvuotaOption: opzione " +op );
alert("lunghezza :" + lunghezza);
for(var j=0; j < lunghezza; j++)
{
alert("j " + j + " op.options " + op.options[j] );
op.options[j]=null;
}
alert("finito svuota");
}
function popolaCap(){
selectProvincia=document.getElementById("select_29");
selectCap=document.getElementById("select_39");
var indexProvincia=selectProvincia.selectedIndex;
var valoreProvincia=selectProvincia.options[indexProvincia].value;
alert("Selezionato index : " + indexProvincia + " ha valore " + valoreProvincia);
var cap;
alert("Intial cap " + cap);
selectCapLung=selectCap.options.length;
alert("Lunghezza select cap " + selectCapLung);
switch(valoreProvincia){
case "": { cap = new Array("Seleziona un'opzione"); break;}
case "AL": {cap = new Array("15011","15060", "15100", "15014", "15020", "15040", "15021", "15010", "15041", "15050", "15061", "15031", "15042", "15070", "15022", "15012", "15013", "15032", "15062", "15030", "15026", "15051", "15071", "15015", "15072", "15033", "15052", "15063", "15016", "15073", "15017", "15053", "15034", "15056", "15054", "15023", "15035", "15064", "15065", "15043", "15066", "15036", "15024", "15074", "15059", "15025", "15075", "15067", "15038", "15076", "15039", "15055", "15027", "15068", "15077", "15044", "15028", "15078", "15045", "15046", "15069", "15079", "15029", "15018", "15019", "15057", "15048", "15049", "15058"); break; }
case "AN": {cap = new Array("60127", "60122", "60128", "60124", "60125", "60131", "60123", "60126", "60121", "60129", "60020", "60011", "60010", "60030", "60021", "60022", "60031", "60043", "60033", "60013", "60034", "60044", "60040", "60015", "60024", "60035", "60025", "60036", "60018", "60037", "60026", "60027", "60038", "60041", "60019", "60048", "60039"); break; }
case "AG": {cap = new Array("92100", "92010", "92021", "92020", "92022", "92023", "92024", "92025", "92011", "92012", "92026", "92027", "92013", "92028", "92014", "92015", "92029", "92016", "92017", "92018", "92019"); break; }
case "AO": {cap = new Array("11010","11020", "11100", "11011", "11022", "11023", "11024", "11012", "11013", "11014", "11025", "11015", "11016", "11017", "11026", "11027", "11028", "11021", "11029", "11018"); break; }
case "AQ": { cap = new Array("67020","67041", "67030", "67051", "67052", "67010", "67021", "67050", "67012", "67013", "67022", "67053", "67014", "67060", "67061", "67023", "67031", "67024", "67043", "67044", "67054", "67040", "67055", "67100", "67056", "67045", "67062", "67015", "67025", "67063", "67046", "67064", "67032", "67057", "67033", "67034", "67017", "67026", "67035", "67027", "67036", "67066", "67047", "67048", "67037", "67058", "67028", "67067", "67038", "67019", "67068", "67029", "67039", "67069", "67049", "67059"); break; }
[...]
// pezzo di codice con altri Array
[...]
}
// Eseguo svuota option
alert("eseguo Svuota Option");
svuotaOption(document.getElementById("select_39"), selectCapLung);
alert( "riempimento con" + cap ) ;
// Eseguo il riempimento
if (cap[0]=="Scegli un'opzione"){
selectCap.options[0] = new Option(cap[0],"",true);
//selectCap.options[0].innerHtml = cap[0];
//selectCap.options[0].value = "";
}
else{
for (var i = 0; i < cap.length; i++ ){
selectCap.options[i] = new Option(cap[i],cap[i]);
// selectCap.options[i].innerHtml = cap[i];
// selectCap.options[i].value = cap[i];
}
}// chiudo else
}//fine Function popolaCap