Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    21

    Problema menù a tendina dinamico

    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!

  2. #2
    mmm secondo me dipende dall'HTML non dal JS... ma la select dei comuni si popola su Firefox?
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    21
    in HTML c'è ben poco:
    codice:
    <form name="loc" method="post" action="cerco2.php">
    <select name="provincia" onchange="caricaComuni();">
    <!-- lista provincie ->
    <option value="xx">Xxxxxx</option>
    </select>
    
    <span id="listaComuni">	</span>
    
    <input type="submit" value="Avanti" class="button"/>
    </form>
    Come ho detto prima, il popolamento funziona bene in entrambi i browser, il problema si ha nell'invio dei dati con Firefox.

  4. #4
    e che dovrebbe fare al submit?
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    21
    Inviare alla pagina cerco2.php la provincia e il comune selezionato.

    Naturalmente essendo il menù per la provincia statico, quello viene sempre inviato. Mentre il comune prescelto viene inviato solo su Explorer.

  6. #6
    ed il comune com'è definito, cioè stampaComuni.php cosa stampa?
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    21
    Ecco il file stampaComuni.php

    Codice PHP:
    <?PHP
    $prov 
    $_GET['c'];

    $c = new Comuni;
    $comuni $c->get_comuni($prov);
    $comuni_id $c->get_id($prov);

    $i 0;

    print 
    "<select name=\"comune\">";
    print 
    "<option value=\"0\">Selezione Comune</option>";
    foreach(
    $comuni as $com)
    {
        if(
    $comuni_id[$i] == $_SESSION['cerco']['comune'])
            
    $select "selected=\"selected\"";
        else
            
    $select "";
        print 
    "<option value=\"$comuni_id[$i]\" $select>$com</option>";
        
    $i++;
    }
    print 
    "</select>";
    ?>
    Grazie mille per l'aiuto!

  8. #8
    sembra corretto, non l'hai pubblicato da qualche parte che ci do un'occhiata?
    I DON'T Double Click!

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    21
    Hai ragione, ci deve essere un errore HTML... per fartelo vedere stavo facendo una versione un po' ripulita e quest'ultima funziona.

    Cerco di capire cos'è e poi magari lo scrivo qui... non si sa mai che possa servire a qualcun altro!

    Grazie per il suggerimento!

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    21
    L'errore era molto stupido, praticamente la form era all'interno di una tabella e il codice era così strutturato:
    codice:
    <table>
    <form>
    <tr><td><select><option>xxx</option></select></td></tr>
    <tr><td><span id="lista comuni"></span></td></tr>
    <tr><td><input type="submit"></td></tr>
    </form>
    </table>
    E' bastato aprire e chiudere il tag form al di fuori della tabella per far funzionare il tutto!

    Ti ringrazio nuovamente!

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.