2013-10-24 46 views
0

我有一些jQuery,它被设计为当页面上的任何<select>元素发生更改时触发。如果该元素的值是“Other”,它将从与select元素同名的div中移除一个类。jQuery监听下拉菜单强制特定的select元素值

这里是我的代码:

$('select').change(function(){ 
    var x = $(this).attr('name'); 
    if($(this).val('Other')) { 
     $('div[name="' + x + '"]').removeClass('hidden'); 
    } else { 
     $('div[name="' + x + '"]').addClass('hidden'); 
    } 
}); 

它的工作原理是在页面加载股利是隐藏的,如果是“其他”被选中出现的股利。

然而:

从下拉结果“其它”被选择(和代码烧制)

因此,不可能选择除“其它”,anythign其他即使试图改变任何选择它在病房之后。

任何人都可以看到我要去哪里错了吗?在此先感谢

回答

1

变化

if($(this).val('Other')) 
// this will set value to Other so if condition will always be true no matter what ever you select. 

if($(this).val() == 'Other') 
// this will check if value is equal to Other 

或更好

if(this.value == 'Other') 
+1

完美 - 感谢:你能解释为什么它没有工作,我的方法是什么? “如果”似乎应该阻止它是规定性的? – Gideon

+0

@Gideon'if($(this).val('Other'))''的代码不会检查值是否为'Other',但会将该值设置为'Other',它会返回'true',if条件总是“真”。即使你改变了价值,这个条件总是成立的。 –