Ошибка проверки JQuery Ошибка замены при добавлении сообщения об ошибке стиля подсказки - PullRequest
1 голос
/ 07 октября 2010

Я следовал за отличным сообщением Нади здесь jQuery переопределить отображение сообщения об ошибке проверки по умолчанию (Css) Всплывающее окно / всплывающая подсказка, как , и это прекрасно работает.Но форма, над которой я работаю, отправляется через ajax, и таблица над формой обновляется при успешном завершении. Таблица увеличивается с каждой отправкой, и в результате позиция формы смещается вниз на странице.Решение Nadia отображает сообщение об ошибке при вызове функции errorPlacement.Проблема в том, что errorPlacement вызывается только в первый раз, когда происходит ошибка.Когда пользователь исправляет ошибку, div скрывается, но не удаляется.Таким образом, в следующий раз, когда произойдет сбой проверки, функция validate заменит только HTML-код оболочки div.В результате абсолютная позиция отключена, поскольку она была рассчитана относительно входных данных до изменения таблицы.Кто-нибудь сталкивался с этим и есть обходной путь?Ниже я использую функцию размещения ошибок, которая прямо из решения Нади в связанном посте.

errorPlacement: function(error, element) {
                    offset = element.offset();
                    error.insertBefore(element)
                    error.addClass('message');  // add a class to the wrapper
                    error.css('position', 'absolute');
                    error.css('left', offset.left + element.outerWidth());
                    error.css('top', offset.top);
                }

1 Ответ

7 голосов
/ 07 октября 2010

Не уверен, сталкивались ли вы с той же проблемой, с которой я столкнулся, или нет, но одно хакерское решение, которое я использовал в прошлом, - это удаление ошибок в обработчике событий showErrors.Это заставляет jQuery.Validate снова вызывать errorPlacement для каждой ошибки.

    showErrors: function (errorMap, errorList) {
        for (var i = 0; errorList[i]; i++) {
            var element = this.errorList[i].element;
            this.errorsFor(element).remove();
        }
        this.defaultShowErrors();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...