jQuery Validate не оценивает все поля

Я работаю над новым макетом страницы, которая представляет собой систему заказа для клиента, основанную на мастере. Они заказывают наборы материалов, но эти материалы могут быть сгруппированы вместе в процессе заказа, так что они могут заказать 10 виджетов в любой комбинации красного, синего и/или зеленого, например. Сумма полей не может превышать заранее рассчитанный максимум. Большинство материалов представляют собой простой выбор для каждой группы.

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

Вот мой пример jsfiddle, чтобы вы могли видеть, что я собираю: http://jsfiddle.net/brianmat/2nV5u/

Я использую фрагмент подсчета ошибок, который без проблем работал на нескольких сайтах. . В этом примере я получаю только 1 ошибку, даже если все 7 текстовых полей остались пустыми.

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

В коде проверки jQuery нет ничего особенного:

 $.validator.addClassRules({
    NumericInput: {
        required: true
    }
});

$("#theForm").validate({
    invalidHandler: function(e, validator) {
        var errors = validator.numberOfInvalids();
        if (errors) {
            var message = errors == 1 ? 'You missed 1 field. It has been highlighted below' : 'You missed ' + errors + ' fields.  They have been highlighted below';
            $("div.error span").html(message);
            $("div.error").show();
        } else {
            $("div.error").hide();
        }
    },
    errorPlacement: function(error, element) {},
    submitHandler: function(form) {
        $("div.error").hide();
        form.submit();
    }
});

Оставшийся код просто обрабатывает промежуточные итоги и ввод только числовых данных.

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

5
задан BrianM 10 May 2012 в 21:46
поделиться