Как проверить, выбран ли параметр?
$('#mySelectBox option').each(function() {
if ($(this).isChecked())
alert('this option is selected');
else
alert('this is not');
});
видимо,isChecked
не работает. Итак, мой вопрос в том, как правильно это сделать?
Спасибо.
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>