Хорошо, прямой ответ на ваш вопрос заключается в том, что вы можете определить пользовательский метод проверки как , показанный в этом примере . Вот критический код:
$.validator.methods.checkLegal = function(value, element) {
return $('input[type=checkbox][name="check[legal]"]').attr('checked');
}
$('form').validate({
rules: { "check[legal]": {checkLegal: true} },
messages: { "check[legal]": "You must check the box" },
});
Однако ваши поля не обязательно должны иметь одинаковое имя, чтобы использовать принцип, описанный в указанной вами ссылке. На самом деле, это сильно упростит ситуацию, если вы этого не сделаете. Также неясно, зачем вам нужны скобки в именах переменных, если это не список флажков.
Тем не менее, здесь приведен простой пример , который не использует те же имена, сохраняет скрытое значение и проверяет видимый флажок. Замена вышеперечисленного:
jQuery(function($) {
$('form').validate({
rules: { "check[legal]": "required" },
});
$('#legal').click(function(e) {
$('#legalHidden').val($(this).attr('checked') ? 1 : 0);
});
});
На сервере вы просто будете ссылаться на check [legalhidden] и не беспокоиться о check [legal]. На клиенте вся проверка выполняется при проверке [legal], и значение копируется в скрытый переменную legal при каждом нажатии.