Preluare textul optiunii din select in JavaScript

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
adrian_ady
Mesaje: 80

Preluare textul optiunii din select in JavaScript

Salut,
am un select care preia id-ul judetelor si le afiseaza in pagina ca numele judetelor. As avea nevoie de amandoua valorile (id si nume).
Vreau sa preiau din select si sa adaug in inputul hidden numele judetului selectat. La momentul actual event.target.value preia valoarea optiunii selectate afisand id-ul judetului. Daca schimb si folosesc event.target.text afiseaza 'undefined'. Daca folosesc event.target.textContent afiseaza toate judetele. Cum sa fac?

Cod: Selectaţi tot

 
     <select name="id_judet" id="id_judet">
      <?
      $judete = $db->select("SELECT * FROM judete");
   echo '<option value="">Selecteaza judetul * ...</option>';
   foreach($judete as $judet) 
   {
      echo '<option value = "'.$judet->id.'" ';
      if($judet->id == $_GET['judet']) echo 'selected';
      echo ' >'.$judet->judet.'</option>';
   }   
      ?>
      </select>

   <input  name="judet" id ="judet" type="hidden" value="" />
   
   <script>
    document.getElementById('id_judet').onchange = function () {
    document.getElementById('judet').value = event.target.value;
       }
   </script>
   

andras Mesaje: 430
Iti spun cum am facut eu: am pus intr-un string (parametrul val, cu delimitator _?_) atit id-ul cit si numele, In JS am pus (simplificat):

Cod: Selectaţi tot

<script>
var x = val.split("_?_",2);
document.getElementById('id-ul').value=x[1]; 
document.getElementById('numele').value=x[2]; 
</script>
si a mers.

MarPlo Mesaje: 4343
Salut
E buna ideea lui "andras", sa ai la value ID_nume, dar daca trimiti acel select la php, trebuie sa tii cont in scriptul php sa desparti ID-ul si Nume.

Altfel, fara acest "artificiu", poti folosi proprietatea: selectedIndex ca sa preiei indexul de ordine al optiunii selectate, iar cu acel index poti prelua ca obiect exact optiunea selectata.
Exemplu:

Cod: Selectaţi tot

Alerts the text of the selected option.
<select name="sites" id="sites">
  <option value="1">MarPlo.net</option>
  <option value="2">CoursesWeb.net</option>
  <option value="3">PHP.net</option>
</select>

<script>
document.getElementById('sites').addEventListener('change', function(e){
  var optxt = e.target.options[e.target.selectedIndex].text;
  alert(optxt);
});
</script>
Demo:
Alerts the text of the selected option.

adrian_ady Mesaje: 80
In timp ce incercam varianta propusa de Andras si nu ma descurcam(numai din vina mea) am vazut raspunsul lui Marplo. Am testat, a mers din prima.
Multumesc Andras, merci Marplo!

Cod: Selectaţi tot

   <script>
     document.getElementById('id_judet').addEventListener('change', function(e){
     var optxt = e.target.options[e.target.selectedIndex].text;
     document.getElementById('judet').value = optxt;
      });
   </script>

Subiecte similare