Пользовательские валидаторы jQuery

#javascript #jquery #validation

#javascript #jquery #проверка

Вопрос:

Я использую плагин проверки jQuery и хочу добавить некоторую пользовательскую логику. У меня есть ряд флажков, с которыми связаны дочерние флажки. Для определенных (не всех) из этих родительских флажков я хочу потребовать, чтобы был установлен один из дочерних флажков. У меня нет проблем с жестким кодированием для этого, поэтому я добавлял подобное поле в свой DOM:

 <input type="hidden" id="child_required_1" class="child_required_1" />
  

А затем добавляем пользовательский валидатор, подобный этому:

 jQuery.validator.addMethod('child_required_1', function(val, element) {
if($('#product_responses_1').length > 0) {
    if($('#product_responses_1').is(':checked')) {
        var count = $("input:checkbox:checked[id^='children_tags_1_']").length;

        if(count == 0) {
            return false;
        }
    }
}

return true;
}, 'You must select at least one child.');
  

Это работает отлично. Но когда я дублирую все это и добавляю «_2», кажется, срабатывает только один из валидаторов. Итак, насколько я могу судить, пользовательские валидаторы уникальны для каждой формы? Если это так, то как я должен справиться с подобной ситуацией, когда мне может понадобиться, чтобы 15-20 из них отображались в разных местах? Я не хочу показывать только одну ошибку.

Я мог бы также создать правило класса, но это не решает мою проблему создания нескольких меток ошибок и размещения их в соответствующих позициях.

Ответ №1:

По-видимому, его использование в скрытом поле не сработало, но когда я удалил скрытые поля и применил этот класс к самим фактическим флажкам, все сработало нормально. Не совсем уверен, почему.