239 votes

Obtenir le texte de l'option sélectionnée avec JavaScript

J'ai une liste déroulante comme celle-ci :

<select id="box1">
<option value="98">dog</option>
<option value="7122">cat</option>
<option value="142">bird</option>
</select>

Comment puis-je obtenir le texte réel de l'option plutôt que sa valeur en utilisant JavaScript ? Je peux obtenir la valeur avec quelque chose comme :

<select id="box1" onChange="myNewFunction(this.selectedIndex);" >

Mais plutôt que de 7122 Je veux cat .

384voto

999k Points 4947

Essayez les options

function myNewFunction(sel) {
  alert(sel.options[sel.selectedIndex].text);
}

<select id="box1" onChange="myNewFunction(this);">
  <option value="98">dog</option>
  <option value="7122">cat</option>
  <option value="142">bird</option>
</select>

175voto

sasi Points 1344

JavaScript pur et simple

var sel = document.getElementById("box1");
var text= sel.options[sel.selectedIndex].text;

jQuery :

$("#box1 option:selected").text();

24voto

xgqfrms Points 2718

Il existe deux solutions, pour autant que je sache.

pour les deux, il suffit d'utiliser du javascript classique

1 selectedOptions

Démonstration en direct

const log = console.log;
const areaSelect = document.querySelector(`[id="area"]`);

areaSelect.addEventListener(`change`, (e) => {
  // log(`e.target`, e.target);
  const select = e.target;
  const value = select.value;
  const desc = select.selectedOptions[0].text;
  log(`option desc`, desc);
});

<div class="select-box clearfix">
  <label for="area">Area</label>
  <select id="area">
    <option value="101">A1</option>
    <option value="102">B2</option>
    <option value="103">C3</option>
  </select>
</div>

2 options

Démonstration en direct

const log = console.log;
const areaSelect = document.querySelector(`[id="area"]`);

areaSelect.addEventListener(`change`, (e) => {
  // log(`e.target`, e.target);
  const select = e.target;
  const value = select.value;
  const desc = select.options[select.selectedIndex].text;
  log(`option desc`, desc);
});

<div class="select-box clearfix">
  <label for="area">Area</label>
  <select id="area">
    <option value="101">A1</option>
    <option value="102">B2</option>
    <option value="103">C3</option>
  </select>
</div>

20voto

klidifia Points 1020

Toutes ces fonctions et ces choses aléatoires, je pense que c'est mieux d'utiliser ça, et de faire comme ça :

this.options[this.selectedIndex].text

13voto

VisioN Points 62518

HTML :

<select id="box1" onChange="myNewFunction(this);">

JavaScript :

function myNewFunction(element) {
    var text = element.options[element.selectedIndex].text;
    // ...
}

DEMO : http://jsfiddle.net/6dkun/1/

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