2013-04-08 230 views
1

我有一个jQuery函数的问题。我想基于一个选定的选项来禁用其他选择。在我的情况下,如果选择选择1中的选项1,我想禁用select2。所以我用这个jQuery函数:如何根据其他选择的选项禁用选择?

$(document).ready(function(e) { 
$('.select1').change(function(e) { 
    if ($('.select1').val()==1){ 
     $('.select2').attr('disabled','disabled'); 
    } 
    else{ 
     $('.select2').removeAttr('disabled'); 
    } 
}) 
}); 

但是这只有当我第一次选择选项2(或任何其他选项构成本选),然后重新选择选项1(我想那是因为改变功能的使用)。如何禁用select2当默认select1被设置为选项1时???

$(document).ready(function(e) { 
    if ($('.select1').val()==1){ 
    $('.select2').attr('disabled','disabled'); 
} 
else{ 
    $('.select2').removeAttr('disabled'); 
} 
}) 

这也不会工作:/

+0

使用['.prop()'](http://api.jquery.com/prop/)而不是'.attr()'。 – Dom 2013-04-08 20:34:49

+0

如果已经选择1,则可以在页面加载时使用更改函数外部的脚本进行初始化。 – 2013-04-08 20:36:10

+0

我一直在使用它,但在我的页面上,我有一个自动完成插件,它不能在1.4+ jQuery版本上运行,1.4版本不支持.prop(),只有.attr() – 2013-04-08 20:37:29

回答

5

这听起来像你想触发启动一个“变”事件。

$('.select1').trigger('change'); 

所以,

$(document).ready(function(e) { 
    $('.select1').change(function(e) { 
     if ($('.select1').val()==1){ 
      $('.select2').attr('disabled','disabled'); 
     } 
     else{ 
      $('.select2').removeAttr('disabled'); 
     } 
    }); 
    $('.select1').trigger('change'); 
}); 
+0

Tnx男士用于快速回答,这对我有很大的帮助:) – 2013-04-08 20:41:32

+0

谢谢@IvanPandžić。您能否将此标记为公认的解决方案? – BumbleB2na 2013-04-08 20:44:30

1

几乎相同的代码。

$(document).ready(function(e) { 
change('.select1'); 
$('.select1').change(function(e) { 
    change(this); 
}) }); function change(sel){ 
if ($(sel).val()==1){ 
    $('.select2').attr('disabled','disabled'); 
    } 
    else{ 
    $('.select2').removeAttr('disabled'); 
} } 
相关问题