Per costruire un menù a tendina con provincie e comuni italiani, ho trovato questo codice online. Funziona tutto bene eccetto per un problema di compatibilità Firefox - Explorer (strano, eh? :P ).
Il problema non è nella "auto compilazione" dei menù, quello funziona bene in entrambi i browser, ma nel passaggio di dati via post. In Explorer, dopo il submit, ritrovo il comune selezionato (nella variabile $_POST['comune']), mentre su Firefox questa variabile rimane vuota.
Ho anche controllato la "Console degli errori" di Firefox, per eventuali errori js, ma non mi segnala niente.
Questo è il codice, vi sarei grato se qualcuno potesse aiutarmi.
codice:
function caricaComuni(){
// Il select della provincia
var prov = document.loc.provincia;
// L’id dell’opzione selezionata
var idOpt = prov.options.selectedIndex;
//Il valore della provincia selezionata, in questo esempio si tratta dell’id della provincia nel database
var provinciaScelta = prov.options[idOpt].value;
// Chiamo la funzione che andrà a richiedere la lista dei comuni allo script in php e la inserirà all’interno del tag span
// ?id=” +provinciaScelta è il parametro inviato allo script php, ovvero l’id della provincia scelta
ajaxupdatediv( "stampaComuni.php?c=" +provinciaScelta, "listaComuni");
}
// La funzione ajaxupdatediv tiene presente delle differenze tra IE e gli altri browsers
function ajaxupdatediv(url, containerid){
var element = document.getElementById(containerid);
var pagina = false;
// richiesta per Mozilla, Safari etc
if (window.XMLHttpRequest){
pagina = new XMLHttpRequest();
}
else if (window.ActiveXObject){ // richiesta per IE
try {
pagina = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
pagina = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false;
pagina.onreadystatechange=function(){
loadpage(pagina, containerid, element);
}
pagina.open('GET', url, true);
pagina.send(null);
}
function loadpage(pagina, containerid, element){
if (pagina.readyState == 4 && (pagina.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML = pagina.responseText;
}
Grazie!