On Sat, 5 Jan 2008 01:08:50 +0100, Franco wrote:
Quote:
select name='country' id='country' onchange="do_select(1);" |
Come più volte ho detto in questo newsgroup, non va mai usato lo
stesso valore sia per il name che per l'id. E' un doppio errore:
da un punto di vista logico (name e id hanno differenti valenze,
non sono la stessa cosa, anzi) e da un punto di vista tecnico.
Soprattutto, rischi di avere problemi su IE in più di un caso.
Inoltre sarebbe consigliato (sebbene ovviamente non sia certo un
vincolo

) adeguarsi sempre alla nomenclatura e sintassi usata
nel linguaggio in cui si sviluppa. Sembra una stupidaggine, ma è
davvero utile. A occhio, direi che sei influenzato o dal vecchio
modo di programmare, o da PHP.
Quote:
ma se la seconda select ha un solo record non popola la select sottostante
con i dati |
Perché non scatta l'onchange: se ha un solo valore, quello viene
considerato selezionato per default. E l'onchange, si ha solo se
cambia la selezione, a livello di GUI.
Puoi fare due cose, oltre a quello che ti è stato già suggerito:
O sposti la tua funzione dall'onchange all'onclick, oppure vai a
forzare la select, in modo che non selezioni la prima option per
default. Questo lo fai impostando manualmente il selectedIndex:
yourselect.selectedIndex = -1;
Se invece preferisci automatizzare la cosa, come dici qui:
Quote:
come posso fare che alla seconda select se trova 1 dato mi popola la terza
select mentre se ne trova piu di uno aspetta che seleziono il record per
popolare la terza select? |
Allora, devi scrivere esattamente quello che hai appena scritto.
Dopo aver popolato la seconda select, controlli quante option ci
sono, se ce n'è solamente una, passi il suo valore alla funzione
che ti popola la terza select. Qualcosa tipo:
// Country?
case 1:
countrybox = document.getElementById('country');
countryID =
countrybox.options[countrybox.selectedIndex].value;
x_populate_region(countryID, do_region_change);
regionbox = document.getElementById('region');
if ( regionbox.options.length == 1 )
x_populate_city(countryID, regionbox.value, do_city_change);
break;
Ti suggerirei ad ogni modo di rivedere la funzione do_select, ci
sono parecchi pezzi ridondanti, in quel codice.
--
~ "Nei film americani, qualsiasi problema che venga considerato
sufficientemente catastrofico, puo' essere risolto facendo esplodere
uno o piu' ordigni nucleari" (ZER0 & Cosimo)