Я нашел более гибкое решение, которое позволяет варьировать лимит для разных наборов флажков.
// Assign a class of limit_checkbox to the containing DIV and
// set a data-limit attribute with your limit.
$(".limit_checkbox").on("change", function()
{
var limit = $(this).attr('data-limit'),
checkboxes = $(this).find("input:checkbox"),
valid = checkboxes.filter(":checked").length >= limit;
checkboxes.not(":checked").attr("disabled", valid);
});
Единственная проблема, которую я обнаружил, заключалась в том, что если ваша проверка завершится неудачно и вернет страницу с вводом, она позволит пользователю выбрать один дополнительный блок перед отключением остальных. Я решил это, посчитав, сколько было проверено, и отключив остальное на сервере перед отправкой страницы с вводом обратно.
надеюсь, что это помогает Ура!