2011-11-13 36 views
0

jQuery新手,在這裏。我無法得到這個工作。這是我用來禁用基於前一個單選按鈕的單選按鈕。如何取消選中單個單選按鈕(如果被另一臺收音機禁用)?

$('document').ready(function() { 
    $('input[name="a"]').change(function() { 
     if($(this).val() == '1') { 
      $('input[name="b"]').removeAttr('disabled'); 
     } else { 
      $('input[name="b"][value="1"]').attr('disabled','disabled'); 
     } 
    }); 
}); 

和:

<input type="radio" name="a" value="1" /> A-1 
<input type="radio" name="a" value="2" /> A-2 

<input type="radio" name="b" value="1" /> B-1 
<input type="radio" name="b" value="2" /> B-2 

所以,如果我檢查A-2,B-1被禁用。但是說我先檢查了B-1,然後我檢查了A-2,然後我想讓B-1不加檢查。我已經嘗試加入:

if($('input[name="b"][value="1"]').is(':disabled')) { 
    $('input[name="b"][value="1"]').removeAttr('checked'); 
} 

它做的工作,但它也取消了B-2,如果我有先檢查。我只想讓B-1得到不受檢查。 (我希望這是有道理的。)

我在做什麼錯?

+0

你總是希望先前檢查的單選按鈕變成取消,如果選擇另一個無線電? –

回答

0

我必須學會這樣的事情在過去匆忙:訣竅是使一個家庭單選按鈕:

family NAME 
    child ID0 
    child ID1 
    child IDn 

在你特定的情況下,你可能會尋找這樣的事(性別):

<input type="radio" name="gender" id='male' value="M" > Male 
<input type="radio" name="gender" id='female' value"F" > Female 

並且,例如,喜歡:

<input type="radio" name="likes" id='tv' value="TV" > Watchs TV 
<input type="radio" name="likes" id='radio' value="radio" > Listens to Radio 

當你有無線電對接家族一旦點擊一個,另一個自動點擊。

然後你就可以檢查無論是剛剛

$('#male').is(':checked') .... $('#female').is(':checked') ..... 

而且,你可以,也,啓動其中的任何殘疾與否或通過單擊該禁用其他:$(「#男」)點擊( );

1
$('input[name="a"]').change(function() { 
    var $b = $('input[name="b"]'); 
    if (this.value == 1) { 
     $b.removeAttr('disabled'); 
    } 
    else { 
     $('input[name="b"][value="1"]:checked').removeAttr('checked'); // the selector behavior is funky here... 
     $b.attr('disabled', true); 
    } 
}); 

這可以按你的意願工作。

有一個[值=「1」]選擇器的問題你(當沒有使用時:選中),聞起來像一個jQuery的錯誤。不過不要擔心;)

a little fiddle for you ^^

相關問題