У меня есть форма, которая имеет много флажков (слишком много, чтобы иметь смысл использовать их собственные правила), и мне нужно использовать плагин jQuery Validation *1002*, чтобы убедиться, что хотя бы один из них выбран. Все они имеют разные названия, поэтому большинство решений, которые я нашел до сих пор от Google, не работают для меня.
Однако я наткнулся на этот пост, который я немного подправил, чтобы сделать этот метод расширения:
// method for checking out checkboxes for the form validation
$.validator.methods.checkboxes_checked = function(value,element,param) {
return ($('#signup #checkboxes input[type=checkbox]:checked').length > 0);
}
... который возвращает истину или ложь в зависимости от того, установлены ли какие-либо флажки. Я не хочу использовать метод из приведенного выше дословного сообщения, так как это потребует создания отдельных правил для каждого флажка, и, поскольку у меня их много (20+), это не имеет большого смысла для меня.
Моя единственная проблема в том, что я не знаю, как подключить это к моему вызову проверки, так как у меня нет «единственного» элемента на странице, чтобы связать его (как, впрочем, все мои другие правила проверки привязанный к конкретному отдельному элементу, в то время как мой метод расширения был бы - по сути - привязан к 20+ элементам). Вот как теперь выглядит мой проверочный вызов:
// validate the form
$('#signup').validate({
rules: {
'bedrooms': { required: true },
'maxrent': { required: true },
'term': { required: true },
'movedate': { required: true },
'firstname': { required: true, minlength: 2 },
'lastname': { required: true, minlength: 1, maxlength: 1 },
'email': { required: true, email: true },
'day_telephone': { required: true, digits: true, minlength: 10, maxlength: 10 }
},
errorPlacement: function(error, element) { error.css('display','none'); },
highlight: function(element, errorClass) {
$(element).fadeOut(function() { $(element).fadeIn(); });
$('label[for='+$(element).attr('name')+']').css('color','red');
},
unhighlight: function(element, errorClass) { $('label[for='+$(element).attr('name')+']').css('color','black'); },
onkeyup: false
});
Я хочу, в основном, чтобы сама форма проверяла (используя плагин jQuery Validation), если мой метод расширения возвращает true перед отправкой. Как я могу добавить это в?