Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234

    Ottenere il text dell'opzione selezionata di una select

    Ciao a tutti,
    ho un problema sul passaggio di un valore pescato da una select..

    gestisco le select in questo modo:
    codice:
    var regiondb = new Object()
    regiondb["Agrigento"] = [{value:"1", text:"Agrigento"},
    						{value:"2", text:"Alessandria della Rocca"},
    						{value:"3", text:"Aragona"}];
    regiondb["Alessandria"] = [{value:"44", text:"Acqui Terme"},
    						{value:"45", text:"Albera Ligure"},
    						{value:"46", text:"Alessandria"}];
    regiondb["Ancona"] = [{value:"234", text:"Agugliano"},
    						{value:"235", text:"Ancona"},
    						{value:"236", text:"Arcevia"}];
    
    function setCities(chooser) {
        var newElem;
        var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
        var cityChooser = chooser.form.elements["city"];
        while (cityChooser.options.length) {
            cityChooser.remove(0);
        }
        var choice = chooser.options[chooser.selectedIndex].value;
        var db = regiondb[choice];
        newElem = document.createElement("option");
        newElem.text = "- - - -";
        newElem.value = "";
        cityChooser.add(newElem, where);
        if (choice != "") {
            for (var i = 0; i < db.length; i++) {
                newElem = document.createElement("option");
                newElem.text = db[i].text;
                newElem.value = db[i].value;
                cityChooser.add(newElem, where);
            }
        }
    }

    Questo è l'html:
    codice:
    <form method="post" name="orderForm" action="mail.php">
    
    	<div>	
    		<label>Provincia</label>
    		<select id="prov" name="prov" class="fieldsel" onchange="setCities(this)">										
    			<option value="" selected="selected">Scegli</option>
    			<option value="Agrigento">Agrigento</option>
    			<option value="Alessandria">Alessandria</option>
    			<option value="Ancona">Ancona</option>
    		</select>
    	</div>
    
    	<div>
    		<label>Città</label>
    		<select id="city" name="city" class="fieldsel">
    			<option value="" selected="selected">Scegli</option>
    		</select>
    	</div>
    </form>

    in mail.php che processa il messaggio recupero il valore della città con
    $city = $_POST['city'];
    il problema è che mi stampa il value della città scelta (es: value:"44" per Acqui Terme)..e non il text Acqui Terme.
    Come posso fare per evitare di sostituire tutti i numeri dei value con i rispettivi nomi delle città?

    Grazie

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma carichi gli 8000 (e rotti) comuni nella array regiondb?
    Se la risposta è si
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    si lo so sono un pazzo..
    ma l'ho già fatto!

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Io passerei a questa soluzione altrimenti devi appendere il valore text alla pagina mail.php?city=valore.text con una funzione, ma un array cosi carica rischi che il bowser si blocchi e comunque sarebbe una pagina lentissima
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Grazie della risposta Andrea!
    Devo dire però che non è per niente lenta la pagina..anzi il passaggio dei dati è immediato.
    A questo punto non penso di rifare il lavoro utilizzando db ecc..
    lo farò sicuramente per un altro progetto.
    Nel caso specifico come posso recuperare il text?

    All'interno della funzione setCities non c'è modo di farlo?

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma il value della select cosi value:"45|Albera Ligure" potrebbe andarti bene?
    Poi potresti splittarlo lato server per recuperare solo il testo.


    Edit: Ma a te il numero nel value serve?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    no non mi serve..
    cmq potrebbe anche andare bene 45|Albera Ligure e poi splitto in mail.php

    come posso fare?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    creati un campo hidden:

    codice:
    <input type="hidden" id="cityText" value="">
    
    <select id="city" name="city" class="fieldsel" onChange="document.getElementById('cityText').value = this.options[this.selectedIndex].text">
    			<option value="" selected="selected">Scegli</option>
    		</select>

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Perfetto,
    grazie Vindav!

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Oppure cambia questa riga della funzione setCities()
    - newElem.value = db[i].value;
    con questa:
    - newElem.value = db[i].text;
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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 © 2025 vBulletin Solutions, Inc. All rights reserved.