web-dev-qa-db-de.com

Wie überprüfe ich, ob eine Option ausgewählt ist?

$('#mySelectBox option').each(function() {
    if ($(this).isChecked())
       alert('this option is selected');
     else
       alert('this is not');
});

Anscheinend funktioniert das isChecked nicht. SO meine Frage ist, wie man das richtig macht? Danke.

134
0x56794E

[~ # ~] Update [~ # ~]

Eine direktere jQuery-Methode für die ausgewählte Option wäre:

var selected_option = $('#mySelectBox option:selected');

Die Beantwortung der Frage .is(':selected') ist das, wonach Sie suchen:

$('#mySelectBox option').each(function() {
    if($(this).is(':selected')) ...

Die Non-JQuery-Methode (wohl die beste Vorgehensweise) wäre:

$('#mySelectBox option').each(function() {
    if(this.selected) ...

Wenn Sie jedoch nur nach dem ausgewählten Wert suchen, versuchen Sie Folgendes:

$('#mySelectBox').val()

Wenn Sie nach dem Text des ausgewählten Werts suchen, gehen Sie wie folgt vor:

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

Check out: http://api.jquery.com/selected-selector/

Suchen Sie das nächste Mal nach Duplikaten SO Fragen:

Aktuelle ausgewählte Option abrufen oder Ausgewählte Option festlegen oder Wie erhält man eine ausgewählte Option in jQuery? oder Option [ausgewählt] = true] funktioniert nicht

234
iambriansreed

Sie können die ausgewählte Option folgendermaßen abrufen:

$('#mySelectBox option:selected')...

LIVE DEMO

Wenn Sie jedoch alle Optionen durchlaufen möchten, verwenden Sie this.selected Anstelle von this.isChecked, Das nicht vorhanden ist:

$('#mySelectBox option').each(function() {
    if (this.selected)
       alert('this option is selected');
     else
       alert('this is not');
});

LIVE DEMO

Update:

Sie haben viele Antworten erhalten, die Ihnen vorschlagen, diese zu verwenden:

$(this).is(':selected') Nun, mit this.selected geht das viel schneller und einfacher. Warum sollten Sie es also verwenden und nicht die native DOM-Elementmethode ?!

Lesen Sie Kennen Sie Ihre DOM-Eigenschaften und -Funktionen in jQueryTag-Info

26
gdoron

Wenn Sie mit is() nicht vertraut oder vertraut sind, können Sie einfach den Wert von prop("selected") überprüfen.

wie hier zu sehen :

$('#mySelectBox option').each(function() {
    if ($(this).prop("selected") == true) {
       // do something
    } else {
       // do something
    }
});​

Bearbeiten :

Wie @gdoron in den Kommentaren ausführte, erfolgt der schnellere und am besten geeignete Zugriff auf die ausgewählte Eigenschaft einer Option über den DOM-Selektor. Hier ist die Geige pdate zeigt diese Aktion.

if (this.selected == true) {

scheint genauso gut zu funktionieren! Danke gdoron.

3
veeTrain

Betrachten Sie dies als Ihre Auswahlliste:

<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">

                                <option value="mostSeen">Most Seen</option>
                                <option value="newst">Newest</option>
                                <option value="mostSell">Most Sell</option>
                                <option value="mostCheap">Most Cheap</option>
                                <option value="mostExpensive">Most Expensive</option>

                            </select>

dann markieren Sie die gewählte Option wie folgt:

function doSomething(param) {

    if ($(param.selected)) {
        alert(param + ' is selected!');
    }

}
2

verwenden

 $("#mySelectBox option:selected");

um zu testen, ob es sich um eine bestimmte Option handelt myoption:

 if($("#mySelectBox option:selected").text() == myoption){
          //...
 }
1
Mouna Cheikhna

Sie können diesen Weg per jquery benutzen:

$(document).ready(function(){
 $('#panel_master_user_job').change(function () {
 var job =  $('#panel_master_user_job').val();
 alert(job);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="job" id="panel_master_user_job" class="form-control">
                                    <option value="master">Master</option>
                                    <option value="user">User</option>
                                    <option value="admin">Admin</option>
                                    <option value="custom">Custom</option>
                                </select>
1
amir

Wenn Sie die ausgewählte Option auf einen bestimmten Wert prüfen müssen :

$('#selectorId option[value=YOUR_VALUE]:selected')
0
dimpiax

Wenn Sie nur überprüfen möchten, ob eine Option ausgewählt ist, müssen Sie nicht alle Optionen durchlaufen. Mach einfach

if($('#mySelectBox').val()){
    // do something
} else {
    // do something else
}

Hinweis: Wenn Sie eine Option mit dem Wert 0 auswählen möchten, müssen Sie die if-Bedingung in $('#mySelectBox').val() != null ändern.

0
Adam

In meinem Fall weiß ich nicht, warum ausgewählt immer wahr ist. Der einzige Weg, auf dem ich nachdenken konnte, ist:

var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
    var optionHTMLStr = el.outerHTML;

    if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
        optionSelected = true;
        return false;
    }
});
0