我正在处理Drupal安装上的表单,并尝试使用jQuery检查是否选择了select option
jQuery( ":selected" )。但是当我尝试它时,结果表明一切都被选中了。
我已尝试同时使用.filter(":selected")
和:selected
,但我同时得到了相同的结果。
下面是我的代码,我还设置了jsfiddle来帮助调试。
html是:
<select>
<option value="_none">Select All</option>
<option value="225">Residential</option>
<option value="224">Commercial</option>
</select>
,我的js是:
jQuery( "select" ).change(function() {
if (jQuery ('option[value="225"]').filter(":selected") ) { // if residential is selected
console.log('res is selected');
} else {
console.log('res is NOT selected');
}
if ( jQuery('option[value="224"]').filter(":selected") ) { // if commercial is selected
console.log('com is selected');
} else {
console.log('com is NOT selected');
}
if ( jQuery('option[value="224"]:selected') || $('option[value="224"]:selected') ) { // if residential or commercial are selected
console.log('com or res is selected');
} else {
console.log('com or res are NOT selected');
}
});
控制台正在记录:
res is selected
com is selected
com or res is selected
答案 0 :(得分:4)
对jQuery的调用总是返回一个对象,总是如此。
您必须检查长度或使用is
if ( jQuery('option[value="225"]').is(":selected") )
在这种情况下,只检查选择的值似乎更容易
jQuery( "select" ).change(function() {
switch(this.value) {
case "255" : // do stuff
break;
case "224" : // do stuff
}
});
答案 1 :(得分:2)
它们不是布尔结果。检查过滤结果的长度属性或将其更改为使用is
:
e.g。
if (jQuery ('option[value="225"]:selected').length ) { // if residential is selected