2013-01-17 24 views
0

所以我最近問了一個關於如何在the other question I posted這樣做的問題,在那裏我問如何改變一些JavaScript,以便只有當某個複選框被選中時,所有的複選框纔會被禁用。禁用複選框不完全正常

嗯,我寫了這個:

$(function() { 
    $("#disable").change(function() { 
     $(this).siblings().attr("disabled", $(this).is(":checked")); 
    }); 
}); 

及以上here on jsfiddle你會發現這是行不通的。這個想法是,如果你檢查第一個複選框,所有其餘的應該被禁用。它怎麼不.....

我做錯了什麼?

回答

1

你出錯了。請點擊這裏:http://jsfiddle.net/83w8s/1/

$(function() { 
    $("#disable").change(function() { 
    $(this).closest('.control-group').siblings('.control-group').find('input').attr("disabled", $(this).is(":checked")); 
    }); 
}); 
+0

此外,如果您正在設置布爾值,則應該使用.prop()而不是.attr()。 disabled屬性應該只接受「disabled」值。該禁用屬性接受布爾值。 – MatRt

+0

不完全正確,儘管它接受'disabled =「true」'它實際上應該是'disabled =「禁用」 – Chanckjh

1

沒有兄弟姐妹的類型是複選框。

$("#disable").change(function() { 
    $('.sidebar').not(this).attr("disabled", this.checked); 
}); 
1

你必須選擇所有的複選框沒有選擇的檢查一個,那麼你就可以關閉所有其他複選框離開第一檢查如下一個,

$(document).ready(function(){ 
    $("#disable").change(function() { 
      if($("#disable").is(':checked')){       
       $("input[type='checkbox']:not(#disable)").attr("disabled", "disabled");     
      }else{ 
       $("input[type='checkbox']:not(#disable)").removeAttr("disabled"); 
      } 
     }); 
}); 

JSFiddle