Geselecteerde waarde in vervolgkeuzelijst ophalen met JavaScript

Hoe krijg ik de geselecteerde waarde uit een vervolgkeuzelijst met JavaScript?

Ik heb de onderstaande methoden geprobeerd, maar ze retourneren allemaal de geselecteerde index in plaats van de waarde:

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>

Antwoord 1, autoriteit 100%

Als je een geselecteerd element hebt dat er als volgt uitziet:

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

Deze code uitvoeren:

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

Zou strUser2maken. Als je eigenlijk test2wilt, doe dan dit:

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

Waardoor strUsertest2

wordt


Antwoord 2, autoriteit 13%

Gewoon 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'
}];

Antwoord 3, autoriteit 6%

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

Dit is correct en zou u de waarde moeten geven.
Is dit de tekst die je zoekt?

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

Dus je bent duidelijk over de terminologie:

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

Deze optie heeft:

  • Index = 0
  • Waarde = hallo
  • Tekst = Hallo wereld

Antwoord 4, autoriteit 2%

De volgende code toont verschillende voorbeelden met betrekking tot het verkrijgen/plaatsen van waarden uit invoer-/selectievelden met behulp van JavaScript.

Bronlink

Werkende Javascript & jQuery-demo

voer hier de afbeeldingsbeschrijving in

voer hier de afbeeldingsbeschrijving in

<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()">

Het volgende script haalt de waarde van de geselecteerde optie op en plaatst deze in tekstvak 1

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

Het volgende script haalt een waarde uit een tekstvak 2 en waarschuwt met zijn waarde

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

Het volgende script roept een functie aan vanuit een functie

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

Antwoord 5

var selectedValue = document.getElementById("ddlViewBy").value;

Antwoord 6

Als u ooit code tegenkomt die puur voor Internet Explorer is geschreven, ziet u mogelijk dit:

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

Als u het bovenstaande in Firefox et al uitvoert, krijgt u de foutmelding ‘is geen functie’, omdat u met Internet Explorer weg kunt komen met () in plaats van []:

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

De juiste manier is om vierkante haken te gebruiken.


Antwoord 7

<select id="Ultra" onchange="alert(this.value)"> 
 <option value="0">Select</option>
 <option value="8">text1</option>
 <option value="5">text2</option>
 <option value="4">text3</option>
</select>

Elk invoer-/formulierveld kan een “this”-sleutelwoord gebruiken wanneer u het vanuit het element opent. Dit elimineert de noodzaak om een formulier in de dom-boom te lokaliseren en vervolgens dit element in het formulier te lokaliseren.


Antwoord 8

Er zijn twee manieren om dit voor elkaar te krijgen met JavaScript of jQuery.

JavaScript:

var getValue = document.getElementById('ddlViewBy').selectedOptions[0].value;
alert (getValue); // This will output the value selected.

OF

var ddlViewBy = document.getElementById('ddlViewBy');
var value = ddlViewBy.options[ddlViewBy.selectedIndex].value;
var text = ddlViewBy.options[ddlViewBy.selectedIndex].text;
alert (value); // This will output the value selected
alert (text); // This will output the text of the value selected

jQuery:

$("#ddlViewBy:selected").text(); // Text of the selected value
$("#ddlViewBy").val(); // Outputs the value of the ID in 'ddlViewBy'

Antwoord 9

Beginners willen waarschijnlijk toegang tot waarden van een select met het NAME-attribuut in plaats van het ID-attribuut. We weten dat alle formulierelementen namen nodig hebben, zelfs voordat ze id’s krijgen.

Dus ik voeg de oplossing getElementsByName()toe, zodat nieuwe ontwikkelaars het ook kunnen zien.

NB. namen voor formulierelementen moeten uniek zijn om uw formulier bruikbaar te maken als het eenmaal is gepost, maar de DOM kan toestaan dat een naam door meer dan één element wordt gedeeld. Overweeg daarom indien mogelijk ID’s aan formulieren toe te voegen, of wees expliciet met formulierelementnamen my_nth_select_named_xen my_nth_text_input_named_y.

Voorbeeld met getElementsByName:

var e = document.getElementsByName("my_select_with_name_ddlViewBy")[0];
var strUser = e.options[e.selectedIndex].value;

Antwoord 10

Gebruik gewoon

  • $('#SelectBoxId option:selected').text();voor het verkrijgen van de tekst zoals vermeld

  • $('#SelectBoxId').val();voor het verkrijgen van de geselecteerde indexwaarde


Antwoord 11

De eerdere antwoorden laten nog ruimte voor verbetering vanwege de mogelijkheden, de intuïtiviteit van de code en het gebruik van idversus name. Men kan een uitlezing krijgen van drie gegevens van een geselecteerde optie — het indexnummer, de waarde en de tekst. Deze eenvoudige, cross-browser code doet alle drie:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Demo GetSelectOptionData</title>
</head>
<body>
    <form name="demoForm">
        <select name="demoSelect" onchange="showData()">
            <option value="zilch">Select:</option>
            <option value="A">Option 1</option>
            <option value="B">Option 2</option>
            <option value="C">Option 3</option>
        </select>
    </form>
    <p id="firstP">&nbsp;</p>
    <p id="secondP">&nbsp;</p>
    <p id="thirdP">&nbsp;</p>
    <script>
    function showData() {
        var theSelect = demoForm.demoSelect;
        var firstP = document.getElementById('firstP');
        var secondP = document.getElementById('secondP');
        var thirdP = document.getElementById('thirdP');
        firstP.innerHTML = ('This option\'s index number is: ' + theSelect.selectedIndex + ' (Javascript index numbers start at 0)');
        secondP.innerHTML = ('Its value is: ' + theSelect[theSelect.selectedIndex].value);
        thirdP.innerHTML = ('Its text is: ' + theSelect[theSelect.selectedIndex].text);
    }
     </script>
</body>
</html>

Live demo: http://jsbin.com/jiwena/1/edit? html,uitvoer.

idmoet worden gebruikt voor make-updoeleinden. Voor functionele vormdoeleinden is namenog steeds geldig, ook in HTML5, en moet nog steeds worden gebruikt. Let ten slotte op het gebruik van vierkante versus ronde haakjes op bepaalde plaatsen. Zoals eerder uitgelegd, accepteren alleen (oudere versies van) Internet Explorer overal ronde versies.


Antwoord 12

JQuery gebruiken:

$('select').val();

Antwoord 13

Een andere oplossing is:

document.getElementById('elementId').selectedOptions[0].value

Antwoord 14

De eenvoudigste manier om dit te doen is:

var value = document.getElementById("selectId").value;

Antwoord 15

Lopend voorbeeld van hoe het werkt:

var e = document.getElementById("ddlViewBy");
var val1 = e.options[e.selectedIndex].value;
var txt = e.options[e.selectedIndex].text;
document.write("<br />Selected option Value: "+ val1);
document.write("<br />Selected option Text: "+ txt);
<select id="ddlViewBy">
  <option value="1">test1</option>
  <option value="2">test2</option>
  <option value="3"  selected="selected">test3</option>
</select>

Antwoord 16

U kunt querySelectorgebruiken.

Bijvoorbeeld

var myElement = document.getElementById('ddlViewBy');
var myValue = myElement.querySelector('[selected]').value;

Antwoord 17

Ik heb een iets andere kijk op hoe ik dit kan bereiken. Ik doe dit meestal met de volgende aanpak (het is een eenvoudigere manier en werkt met elke browser voor zover ik weet):

<select onChange="functionToCall(this.value);" id="ddlViewBy">
  <option value="value1">Text one</option>
  <option value="value2">Text two</option>
  <option value="value3">Text three</option>
  <option value="valueN">Text N</option>
</select>

Antwoord 18

Om mee te gaan met de vorige antwoorden, dit is hoe ik het doe als oneliner. Dit is voor het verkrijgen van de daadwerkelijke tekst van de geselecteerde optie. Er zijn goede voorbeelden om het indexnummer al te krijgen. (En voor de tekst wilde ik het gewoon op deze manier laten zien)

let selText = document.getElementById('elementId').options[document.getElementById('elementId').selectedIndex].text

In sommige zeldzame gevallen moet u misschien haakjes gebruiken, maar dit zou zeer zeldzaam zijn.

let selText = (document.getElementById('elementId')).options[(document.getElementById('elementId')).selectedIndex].text;

Ik betwijfel of dit sneller gaat dan de versie met twee regels. Ik vind het gewoon leuk om mijn code zo veel mogelijk te consolideren.

Helaas haalt dit het element nog steeds twee keer op, wat niet ideaal is. Een methode die het element slechts één keer grijpt, zou nuttiger zijn, maar dat heb ik nog niet bedacht om dit met één regel code te doen.


Antwoord 19

In 2015 werkt het volgende in Firefoxook.

e.opties.selectedIndex


Antwoord 20

Hier is een JavaScript-coderegel:

var x = document.form1.list.value;

Ervan uitgaande dat het vervolgkeuzemenu met de naam lijst name="list"en is opgenomen in een formulier met name-attribuut name="form1".


Antwoord 21

In modernere browsers stelt querySelectorons in staat om de geselecteerde optie in één instructie op te halen, met behulp van de :checkedpseudo-class. Van de geselecteerde optie kunnen we alle informatie verzamelen die we nodig hebben:

const opt = document.querySelector('#ddlViewBy option:checked');
// opt is now the selected option, so
console.log(opt.value, 'is the selected value');
console.log(opt.text, "is the selected option's text");
<select id="ddlViewBy">
  <option value="1">test1</option>
  <option value="2" selected="selected">test2</option>
  <option value="3">test3</option>
</select>

Antwoord 22

U zou querySelectormoeten gebruiken om dit te bereiken. Dit standaardiseert ook de manier om waarde uit formulierelementen te halen.

var dropDownValue = document.querySelector('#ddlViewBy').value;

Fiddle: https://jsfiddle.net/3t80pubr/


Antwoord 23

Probeer

ddlViewBy.value                      // value
ddlViewBy.selectedOptions[0].text    // label

Antwoord 24

event.target.valuein de onChange-callback deed het voor mij.


Antwoord 25

Ik weet niet of ik degene ben die de vraag niet goed heeft, maar dit werkte gewoon voor mij:
Gebruik een onchange()-gebeurtenis in uw html, bijv.

<select id="numberToSelect" onchange="selectNum">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
</select>

//javascript

function selectNum(){
    var strUser = numberToSelect.value;
}

Hiermee krijgt u de waarde per klik in de keuzelijst


Antwoord 26

Hier is een eenvoudige manier om het te doen in een onchange-functie:

event.target.options[event.target.selectedIndex].dataset.name


Antwoord 27

Ik denk dat je een gebeurtenislistener aan de select-tag zelf kunt koppelen, bijvoorbeeld:

<script>
  document.addEventListener("DOMContentLoaded", (_) => {
    document.querySelector("select").addEventListener("change", (e) => {
      console.log(e.target.value);
    });
  });
</script>

In dit scenario moet u ervoor zorgen dat u een waardekenmerk heeft voor al uw opties, en dat ze niet null zijn.


Antwoord 28

Doe gewoon: document.getElementById('idselect').options.selectedIndex

Dan krijg ik een geselecteerde indexwaarde, beginnend bij 0.


Antwoord 29

Maak een vervolgkeuzemenu met verschillende opties (zoveel als je wilt!)

<select>
  <option value="giveItAName">Give it a name
  <option value="bananaShark">Ridiculous animal
  <ooption value="Unknown">Give more options!
</select>

Ik maakte een beetje hilarisch.
Hier is het codefragment:

<select>
  <option value="RidiculousObject">Banana Shark
  <option value="SuperDuperCoding">select tag and option tag!
  <option value="Unknown">Add more tags to add more options!
</select>
<h1>Only 1 option (Useless)</h1>
<select>
  <option value="Single">Single Option
</select>  

Other episodes