Ваш код был близок, с несколькими серьезными проблемами.
http://jsfiddle.net/mtYtW/37/
$(function() {
$('table input[type="checkbox"]').change(function() {
var countchecked = $('table input[type="checkbox"]').filter(":checked").length
if (countchecked >= 5) {
$("table input:checkbox").not(":checked").attr("disabled", true);
}else{
$("table input:checkbox").attr("disabled", false);
}
});
});
Самое большое, ваш код выполнялся только при загрузке. Вы должны выполнить его каждый раз, когда установлен один из флажков, то есть эта часть:
$('table input[type="checkbox"]').change(function() {
У вас было имя переменной с ошибкой countcheck
не существует, это было countchecked
.
Вы использовали find
, когда действительно хотели filter
. Find будет искать в потомках элементов вашего набора, вы хотели отфильтровать их.
У вас было > 5
, когда вы заявили, что хотите отключить AT 5. Так что это должно быть >=
.
Вы отключили ВСЕ флажки, а не только не отмеченные, как вы сказали, я добавил .not(":checked")
.
И, наконец, я подумал, что вы, вероятно, захотите включить их снова, если один из них не отмечен, поэтому я добавил:
}else{
$("table input:checkbox").attr("disabled", false);
}