jQuery:选择不起作用

时间:2015-04-21 16:16:20

标签: javascript jquery forms

我正在处理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

2 个答案:

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

JSFiddle: https://jsfiddle.net/TrueBlueAussie/cbe9dhg2/1/