Проверка JQ: скрыть контейнер ошибок - PullRequest
0 голосов
/ 11 марта 2012

Контейнер ошибок DIV с общим сообщением об ошибке отображается автоматически, поскольку он указан в значениях по умолчанию для проверки:

jQuery.validator.setDefaults({
    ........
    errorContainer: ".valerror",
    ........
});

В этом контейнере есть только общее сообщение "Проверьте свои входные данные", и он не должен содержать сообщения, относящиеся ккаждый вход управления.Когда я нажимаю кнопку «Отправить» без заполнения формы, помечаются недействительные поля и отображается общее сообщение об ошибке.Когда поля заполнены, они не отмечены, но общее сообщение об ошибке остается.

Теперь проблема: мне нужно скрыть контейнер, когда все поля становятся действительными (без повторного нажатия кнопки отправки).

Я пытался

    unhighlight: function(element, errorClass) {
        if (this.numberOfInvalids() == 0) {
            $(".valerror").hide();
        }
    },

, но этот блок кода полностью нарушает нормальное функционирование механизма проверки, потому что он ничего не знает о "невыделенном".

Принятый ответ

Я скопировал обработчики «unhighlight» и «highlight» из исходного кода плагина проверки JQuery в мой код, и функциональность проверки была восстановлена.

    highlight: function(element, errorClass, validClass) {
        // default handling
        if (element.type === 'radio') {
            this.findByName(element.name).addClass(errorClass).removeClass(validClass);
        } else {
            $(element).addClass(errorClass).removeClass(validClass);
        }
        // custom handling
        $("#errnum").html(this.numberOfInvalids());
    },
    unhighlight: function(element, errorClass, validClass) {
        // default handling
        if (element.type === 'radio') {
            this.findByName(element.name).removeClass(errorClass).addClass(validClass);
        } else {
            $(element).removeClass(errorClass).addClass(validClass);
        }
        // custom handling
        $("#errnum").html(this.numberOfInvalids());
    },

Зная количество ошибок проверкиОстальное помогло мне выяснить, что контейнер ошибок автоматически скрывается плагином валидации JQ и что проблема заключалась в некоторых зависимых ведомых SELECT, которые не выполняли повторную проверку при смене главных SELECT (но выделение было удалено из ведомых).

1 Ответ

0 голосов
/ 11 марта 2012

Скорее всего, вы делаете что-то еще неправильно, что вы не показываете нас в своих примерах выше. errorContainer задокументировано так:

Использует дополнительный контейнер для сообщений об ошибках. Элементы даны как errorContainer все отображаются и скрываются при возникновении ошибок

т.е. проверять дескрипторы, показывая и скрывая все, что вы указываете в качестве errorContainer. И вы можете видеть здесь, что он действительно обрабатывает это правильно: http://jsfiddle.net/ryleyb/neugH/

Если это не поможет, вам нужно изменить свой вопрос, чтобы предоставить больше кода ... вероятно, остальные опции, которые вы предоставляете для $ .validate и любой другой JS, прикрепленной к форме. *

...