2045 votes

Obtenir la valeur sélectionnée dans une liste déroulante en utilisant JavaScript

Comment obtenir la valeur sélectionnée dans une liste déroulante en utilisant JavaScript ?

J'ai essayé les méthodes ci-dessous, mais elles renvoient toutes l'index sélectionné au lieu de la valeur :

var e = document.getElementById("ddlViewBy");
function show(){
  var as = document.forms[0].ddlViewBy.value;
  var strUser = e.options[e.selectedIndex].value;
  console.log(as, strUser);
}
e.onchange=show;
show();

<form>
  <select id="ddlViewBy">
    <option value="1">test1</option>
    <option value="2" selected="selected">test2</option>
    <option value="3">test3</option>
  </select>
</form>

4 votes

3291voto

Paolo Bergantino Points 199336

Si vous avez un élément de sélection qui ressemble à ceci :

<select id="ddlViewBy">
  <option value="1">test1</option>
  <option value="2" selected="selected">test2</option>
  <option value="3">test3</option>
</select>

J'exécute ce code :

var e = document.getElementById("ddlViewBy");
var strUser = e.value;

Ferait strUser sea 2 . Si ce que vous voulez vraiment est test2 alors faites ceci :

var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].text;

Ce qui ferait strUser sea test2

0 votes

J'écris exactement le même code MAIS à l'intérieur d'une fonction dans la balise script. Lorsque l'utilisateur sélectionne cette option dans le menu déroulant, je dois obtenir le texte. Dois-je utiliser onclick/ontoggle/onchange, lequel des trois ?

156 votes

var strUser = e.options[e.selectedIndex].value; pourquoi ne pas simplement var strUser = e.value ?

24 votes

@TheRedPea-peut-être parce que lorsque cette réponse a été écrite, il y avait une chance (même si elle était infime) qu'une ancienne version de Netscape Navigator doive être prise en compte, donc une méthode tout aussi ancienne pour accéder à la valeur d'une seule sélection a été utilisée. Mais ce n'est qu'une supposition ;-)

420voto

Vitalii Fedorenko Points 17469

Plain JavaScript :

var e = document.getElementById("elementId");
var value = e.options[e.selectedIndex].value;
var text = e.options[e.selectedIndex].text;

jQuery :

$("#elementId :selected").text(); // The text content of the selected option
$("#elementId :selected").val(); // The value of the selected option

AngularJS : ( http://jsfiddle.net/qk5wwyct ):

// HTML
<select ng-model="selectItem" ng-options="item as item.text for item in items">
</select>
<p>Text: {{selectItem.text}}</p>
<p>Value: {{selectItem.value}}</p>

// JavaScript
$scope.items = [{
  value: 'item_1_id',
  text: 'Item 1'
}, {
  value: 'item_2_id',
  text: 'Item 2'
}];

2 votes

Je dois faire quelque chose de mal, car lorsque j'essaie de faire cela, j'obtiens le texte de chaque option dans la liste déroulante.

6 votes

Cela a fonctionné pour moi de manière différente. $("#ddlViewBy :selected").val() pas sans sélectionné

1 votes

element.options[e.selectedIndex].value doit être element.options[element.selectedIndex].value

182voto

Greg Points 132247
var strUser = e.options[e.selectedIndex].value;

Ceci est correct et devrait vous donner la valeur. C'est le texte que vous cherchez ?

var strUser = e.options[e.selectedIndex].text;

Vous êtes donc au clair sur la terminologie :

<select>
    <option value="hello">Hello World</option>
</select>

Cette option a :

  • Index = 0
  • Valeur = bonjour
  • Texte = Hello World

1 votes

Je pensais que le ".value" en javascript devait me renvoyer la valeur, mais seul le ".text" me renvoie ce que le .SelectedValue en asp.net me renvoie. Merci pour l'exemple donné !

1 votes

Oui - faire en sorte que la valeur de l'option soit la même que celle qu'elle a. Plus simple - le type ci-dessus doit écrire plus de code pour compenser son imprécision initiale.

0 votes

Devrait être e.target.options[e.target.selectedIndex].text Je ne sais pas pourquoi c'est faux dans toutes les réponses ici

67voto

jolly.exe Points 1020

Le code suivant présente divers exemples liés à l'obtention/la saisie de valeurs dans des champs de saisie/sélection à l'aide de JavaScript.

Lien vers la source

Travail Démonstration de Javascript et jQuery

enter image description here

enter image description here

 <select id="Ultra" onchange="run()">  <!--Call run() function-->
     <option value="0">Select</option>
     <option value="8">text1</option>
     <option value="5">text2</option>
     <option value="4">text3</option>
</select><br><br>
TextBox1<br>
<input type="text" id="srt" placeholder="get value on option select"><br>
TextBox2<br>
<input type="text" id="rtt"  placeholder="Write Something !" onkeyup="up()">

Le script suivant récupère la valeur de l'option sélectionnée et la met dans la zone de texte 1.

<script>
    function run() {
        document.getElementById("srt").value = document.getElementById("Ultra").value;
    }
</script>

Le script suivant récupère une valeur dans une zone de texte 2 et émet une alerte avec cette valeur.

<script>
    function up() {
        //if (document.getElementById("srt").value != "") {
            var dop = document.getElementById("srt").value;
        //}
        alert(dop);
    }
</script>

Le script suivant appelle une fonction depuis une fonction.

<script>
    function up() {
        var dop = document.getElementById("srt").value;
        pop(dop); // Calling function pop
    }

    function pop(val) {
        alert(val);
    }?
</script>

0 votes

onchange=run(this.value) o (this.text) peut être plus officiel.

24voto

Clara Onager Points 1623

Si vous rencontrez du code écrit uniquement pour Internet Explorer, vous verrez peut-être ceci :

var e = document.getElementById("ddlViewBy");
var strUser = e.options(e.selectedIndex).value;

Si vous exécutez l'opération ci-dessus dans Firefox et autres, vous obtiendrez une erreur "n'est pas une fonction", car Internet Explorer vous permet d'utiliser () au lieu de [] :

var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;

La bonne méthode consiste à utiliser des crochets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X