2011-07-18 49 views
3

我想禁用類的所有未選中複選框當這個類的一個複選框被選中,所以我想這禁用jQuery的類的所有選中的複選框

if ((($('input[type=checkbox]:checked.classname)).length)==1) { 

    $('.classname').not(':checked').each(function(){ 
         $(this).attr('disabled','disabled'); 
         }); 

,我也嘗試過這一

$("input[type=checkbox]."+aclass).not(':checked').attr('disabled',true); 

這段代碼並沒有禁用任何複選框,雖然我正在使用這個選擇器獲取長度嗎?

+0

如果您的條件未關閉,請檢查是否爲錯字或您的解決方案。 – Vivek

+0

是否有使用大型js庫重新創建一組單選按鈕的原因? – Sinetheta

+0

@sinetheta。我的第一個解決方案也是這樣,但是在單選按鈕中,一旦你選擇了其中的一個,你不能不刷新它們而沒有刷新或者單擊重置按鈕,但是對於許多不同類的組有嚴格的要求,而不是給出重置按鈕也就是這就是爲什麼我不得不去這 – khagesh

回答

9

試試這個:

$('.test').change(function(){ 
    if($('input.test').filter(':checked').length == 1) 
     $('input.test:not(:checked)').attr('disabled', 'disabled'); 
    else 
     $('input.test').removeAttr('disabled'); 
});​ 

JSFiddle

+0

謝謝你的工作:) – khagesh

5

這個課題已進行過beaten to death。共識是使用單選按鈕和某種「無」選項。通過這種方式,您可以避免將新功能編入用戶持有某些期望的控件中。

+1

雖然接受的答案在技術上是正確的,這真的是最好的答案。 –

+0

我在使用複選框的時候反思了這一點,當只有1個選項可以選擇時,在一列項目之間進行選擇....感謝您提醒我「RADIO」選項!親愛的 –

相關問題