Как проверить, выбран ли параметр?


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

видимо,isChecked не работает. Итак, мой вопрос в том, как правильно это сделать? Спасибо.

9 115

9 ответов:

обновление

более прямой метод jQuery для выбранной опции будет:

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

отвечая на вопрос .is(':selected') это то, что вы ищете:

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

не jQuery (возможно, лучшая практика) способ сделать это будет:

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

хотя, если вы просто ищете выбранное значение попробовать:

$('#mySelectBox').val()

если вы ищете текст выбранного значения будет делать:

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

проверить: http://api.jquery.com/selected-selector/

в следующий раз искать дубликат так вопросы:

получить текущую выбранную опцию или установить выбранный параметр или как получить $(этот) выбранный вариант в jQuery? или опция[selected=true] не работает

вы можете получить выбранную опцию следующим образом:

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

ДЕМО

но если вы хотите повторить все варианты, сделайте это с this.selected вместо this.isChecked которой не существует:

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

ДЕМО

обновление:

у вас есть много ответов, предлагающих вам использовать это:

$(this).is(':selected') ну, это можно сделать намного быстрее и проще с this.selected Так почему вы должны использовать его, а не собственный метод элемента DOM?!

читать знайте свои свойства и функции DOM на jQuery информация о теге

если вы не знакомы и комфортно с is(), вы можете просто проверить значение prop("selected").

как видно здесь:

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

Edit:

как указал @gdoron в комментариях, более быстрый и наиболее подходящий способ доступа к выбранному свойству опции-через селектор DOM. Вот скрипка обновление показывать этого действия.

if (this.selected == true) {

кажется, работает так же хорошо! Спасибо гдорон.

использовать

 $("#mySelectBox option:selected");

чтобы проверить, если определенный параметр myoption:

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

считайте это своим списком выбора:

<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>

затем вы проверяете выбранную опцию следующим образом:

function doSomething(param) {

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

}

в моем случае я не знаю, почему некоторые всегда истинно. Поэтому единственный способ, который я смог придумать это:

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

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

Если вы хотите только проверить, выбран ли параметр, то вам не нужно перебирать все параметры. Просто сделай

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

Примечание: Если у вас есть опция со значением=0, которую вы хотите выбрать, вам нужно изменить if-condition на $('#mySelectBox').val() != null

вы можете использовать этот способ с помощью jquery:

$(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>

Если вам нужно проверить состояние выбранного параметра для конкретное значение:

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