Ruft den ausgewählten Wert eines Dropdown-Elements mit jQuery ab


443

Wie kann ich mit jQuery den ausgewählten Wert eines Dropdown-Felds abrufen?
Ich habe es versucht

var value = $('#dropDownId').val();

und

var value = $('select#dropDownId option:selected').val();

aber beide geben eine leere Zeichenfolge zurück.


3
Beides sollte funktionieren. Das Problem muss woanders sein (zB ist dieser Code in einen $(document).ready(...Block eingeschlossen?)
karim79

4
var value = $('#dropDownId:selected').val();
Ameise

2
Nein - $('#dropDownId').val();ist der präziseste Weg, um den ausgewählten Wert zu erhalten.
Karim79

1
@shyam Sie müssen in dieser Anweisung nicht auswählen, da IDs für das Dokument eindeutig sind. Sie sollten den Tag-Namen nur verwenden, wenn Sie sich auf Klassen beziehen select#dropDownId option:selected.
Ameise

Antworten:


840

So erhalten Sie für einzelne Select-Dom-Elemente den aktuell ausgewählten Wert:

$('#dropDownId').val();

So erhalten Sie den aktuell ausgewählten Text:

$('#dropDownId :selected').text();

11
Sie brauchen vorher ein Leerzeichen :selected.
Zwischenzeit

53
Der schnellste Weg, um den Text der ausgewählten Option zu erhalten, ist:$("#dropDownId").children("option").filter(":selected").text()
RickardN

3
Ich wünschte, Sie hätten Verweise auf .val()und.text()
shareef

8
Richard, dein Code ist zu lang ... er kann für die Lesbarkeit viel prägnanter sein
PositiveGuy

2
@ JamesM.Lay eine DOM-Referenz in einer Variablen gespeichert? Dann benutzen SiejQuery(domVariable).val()
Allen Linatoc

57
var value = $('#dropDownId:selected').text()

Sollte gut funktionieren, siehe dieses Beispiel:

$(document).ready(function(){ 
  $('#button1').click(function(){ 
    alert($('#combo :selected').text());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="combo">
  <option value="1">Test 1</option>
  <option value="2">Test 2</option>
</select>
<input id="button1" type="button" value="Click!" />


4
"Wert" ist das, was die meisten Programmierer vermissen, während das Deklarieren von Elementen und Abfragen stattdessen weiterhin Text zurückgibt
Asad


22

Versuchen Sie diese jQuery,

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

oder dieses Javascript,

 var selID=document.getElementById("ddlid");
 var text=selID.options[selID.selectedIndex].text;

Wenn Sie auf den Wert und nicht auf den Text zugreifen müssen, val()verwenden Sie stattdessen die Methode text().

Schauen Sie sich die folgenden Geigen-Links an.

Demo1 | Demo2


14

Versuche dies

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

OP fragt nach dem ausgewählten Wert. Diese Antwort würde den Textinhalt der Dropdown-Liste erhalten. Nicht falsch, nur nicht das, wonach er gefragt hatte.
Joshua Dance

12

Ich weiß, dass dies ein schrecklich alter Beitrag ist und ich wahrscheinlich für diese erbärmliche Auferstehung ausgepeitscht werden sollte, aber ich dachte, ich würde ein paar SEHR hilfreiche kleine JS-Schnipsel teilen, die ich in jeder Anwendung in meinem Arsenal verwende ...

Beim Tippen:

$("#selector option:selected").val() // or
$("#selector option:selected").text()

wird alt, versuchen Sie, diese kleinen Fladen zu Ihrer globalen *.jsDatei hinzuzufügen :

function soval(a) {
    return $('option:selected', a).val();
}
function sotext(a) {
    return $('option:selected', a).text();
}

und einfach schreiben soval("#selector");oder sotext("#selector");stattdessen! Werden Sie noch schicker, indem Sie beide kombinieren und ein Objekt zurückgeben, das sowohl das valueals auch das enthält text!

function so(a) {
    my.value = $('option:selected', a).val();
    my.text  = $('option:selected', a).text();
    return my;
}

Das spart mir eine Menge wertvoller Zeit, insbesondere bei formlastigen Anwendungen!


9

Dadurch wird der ausgewählte Wert benachrichtigt. JQuery Code ...

$(document).ready(function () {

        $("#myDropDown").change(function (event) {
            alert("You have Selected  :: "+$(this).val());
        });
    });

HTML Quelltext...

<select id="myDropDown">
        <option>Milk</option>
        <option>Egg</option>
        <option>Bread</option>
        <option>Fruits</option>
    </select>


8

Noch ein getestetes Beispiel:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
    $('#bonus').change(function() {
    alert($("#bonus option:selected").text());
  });  
});
</script>
</head>

<body>
<select id="bonus">
<option value="1">-$5000</option>
<option value="2">-$2500</option>
<option value="3">$0</option>
<option value="4">$1</option>
<option value="5">We really appreciate your work</option>
</select>
</body>
</html>

4

Versuchen Sie dies, es erhält den Wert:

$('select#myField').find('option:selected').val();


3

Haben Sie Ihr Auswahlelement mit einer ID versehen?

<select id='dropDownId'> ...

Ihre erste Aussage sollte funktionieren!


3

Für ausgewählten Text verwenden Sie:

value: $('#dropDownId :selected').text();

Für den ausgewählten Wert verwenden Sie:

value: $('#dropDownId').val();

2

Das id, was für Ihre Dropdown-Steuerung im generiert wurde html, ist dynamisch. Verwenden $('ct100_<Your control id>').val().Sie also die vollständige ID. Es wird funktionieren.


2

Oder wenn Sie versuchen würden:

$("#foo").find("select[name=bar]").val();

Ich habe es heute benutzt und es funktioniert gut.


2

verwenden

$('#dropDownId').find('option:selected').val()

Das sollte funktionieren :)


2

Um den jquery-Wert aus der Dropdown-Liste zu erhalten, verwenden Sie einfach die unten gesendete Funktion idund erhalten den ausgewählten Wert:

function getValue(id){
    var value = "";
    if($('#'+id)[0]!=undefined && $('#'+id)[0]!=null){
        for(var i=0;i<$('#'+id)[0].length;i++){
            if($('#'+id)[0][i].selected == true){
                if(value != ""){
                    value = value + ", ";
                }
                value = value + $('#'+id)[0][i].innerText;
            }
        }
    }
    return value;
}

Die mühsame Art, es zu tun, aber was auch immer funktioniert.
MC9000

2

	function fundrp(){
	var text_value = $("#drpboxid option:selected").text();  
	console.log(text_value);
	var val_text = $("#drpboxid option:selected").val();  
	console.log(val_text);
	var value_text = $("#drpboxid option:selected").attr("vlaue") ;
	console.log(value_text);
	var get_att_value = $("#drpboxid option:selected").attr("id") 
	console.log(get_att_value);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select id="drpboxid">
	<option id="1_one" vlaue="one">one</option>
	<option id="2_two" vlaue="two">two</option>
	<option id="3_three" vlaue="three">three</option>              
</select>
<button id="btndrp" onclick="fundrp()">Tracking Report1234</button>


1

Ich weiß, dass dies alt ist, aber ich aktualisiere dies mit einer aktuelleren Antwort

$( document ).on( 'change', '#combo', function () {
var prepMin= $("#combo option:selected").val();
 alert(prepMin);
});

ich hoffe das hilft



1

Verwenden Sie einen dieser Codes

$('#dropDownId :selected').text();

ODER

$('#dropDownId').text();


1
$("#selector <b>></b> option:selected").val()

Oder

$("#selector <b>></b> option:selected").text()

Die obigen Codes haben bei mir gut funktioniert


1

Sie können dies tun, indem Sie den folgenden Code verwenden.

$('#dropDownId').val();

Wenn Sie den ausgewählten Wert aus den Optionen der Auswahlliste abrufen möchten. Dies wird den Trick machen.

$('#dropDownId option:selected').text();

0

Sie können Folgendes verwenden:

$(document).on('change', 'select#dropDownId', function(){

            var value = $('select#dropDownId option:selected').text();

            //OR

            var value = $(this).val();

});


0

Versuche dies:

 $('#dropDownId option').filter(':selected').text();     

 $('#dropDownId option').filter(':selected').val();

0

Verwenden Sie die folgende Methode, um den ausgewählten Wert beim Laden der Seite abzurufen:

$(document).ready(function () {
$('#ddlid').on('change', function () {
                var value = $('#ddlid :selected').text();
                alert(value);`
            });
});

0

Wenn Sie mehr als eine Dropdown-Liste haben, versuchen Sie:

HTML:

<select id="dropdown1" onchange="myFunction(this)">
    <option value='...'>Option1
    <option value='...'>Option2
</select>
<select id="dropdown2" onchange="myFunction(this)">
    <option value='...'>Option1
    <option value='...'>Option2
</select>

JavaScript:

    function myFunction(sel) {
        var selected = sel.value;
    }

0

HTML:

<select class="form-control" id="SecondSelect">
       <option>5<option>
       <option>10<option>
       <option>20<option>
       <option>30<option>
</select>

JavaScript:

var value = $('#SecondSelect')[0].value;

Bitte geben Sie eine Erklärung an, wie und warum dies das Problem löst. Dies würde wirklich dazu beitragen, die Qualität Ihres Beitrags zu verbessern und wahrscheinlich zu mehr Up-Votes zu führen.
Android

-1
$("#dropDownId").val('2');
var SelectedValue= $("#dropDownId option:selected").text();
$(".ParentClass .select-value").html(SelectedValue);


<p class="inline-large-label button-height ParentClass" >
     <label for="large-label-2" class="label">Country <span style="color: Red;">*</span><small></small></label>
     <asp:DropDownList runat="server" ID="dropDownId " CssClass="select" Width="200px">          
    </asp:DropDownList>
</p>

-1

Das sollte für Sie funktionieren

  $("#dropDownId").on('change',function(){
     var value=$(this).val();
     alert(value);
  });

Was ist, wenn Ihre Dropdown-Option als programmgesteuert ausgewählt wurde (z. B. aus einer Ajax-Anforderung, die ein Dropdown-Menü ausfüllt)? Wenn Sie versuchen, eine .val () zu erhalten, erhalten Sie null für den Wert (obwohl das Überprüfen der Quelle zeigt, dass die Option tatsächlich ausgewählt ist)! $ ("myDD-Option: ausgewählt"). val () ergibt undefiniert.
MC9000
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.