2013-04-08 225 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'); 
} } 
相關問題