livequery не всегда живут при использовании с jquery.validate - PullRequest
1 голос
/ 08 октября 2010

Я использую плагин jquerylive для добавления дополнительных классов CSS в класс .field-validation-error, например так:

$(".field-validation-error").livequery(function () { 
    $(this).addClass('ui-state-error ui-corner-all'); 
});

когда я получаю некоторые промежутки с этим классом, сгенерированные jquery.validate, приведенный выше код работает, но при 2-й проверке это не так.

вот прямая ссылка: http://mrgsp.md:8080/awesome/person нажмите «Создать после», нажмите «Сохранить», чтобы получить подтверждающие сообщения, и снова нажмите «Сохранить»

.

Ответы [ 2 ]

1 голос
/ 22 октября 2010

Почему бы не подключить вашу функцию к тому же событию, которое вызывает validate ()?

Обновление

Я прочитал другие комментарии и увидел, что вы используете xVal, прочитал немного о jQuery.Validate. jQuery.Validate связан со многими событиями, и регистрация в обработчиках событий была бы грязной. Причиной того, что livequery работает впервые, является то, что метки генерируются, если они ранее не существовали, так что событие создания заставляет функцию выполняться, каждый раз после этого метка просто скрывается / показывается, так что она не запускается снова, а jQuery. Функция валидации showLabel сбрасывает классы.

Идеальное место в xVal - сделать одно небольшое изменение в файле xVal.jquery.validate.js. В методе _ensureFormIsMarkedForValidation есть строки:

ensureFormIsMarkedForValidation: function(formElement, options) {
        if (!formElement.data("isMarkedForValidation")) {
            formElement.data("isMarkedForValidation", true);
            var validationOptions = {
                errorClass: "field-validation-error",

Все, что вам нужно сделать, это изменить errorClass на:

errorClass: "field-validation-error ui-state-error ui-corner-all",

Это потому, что xVal выполняет настройку плагина validate.

1 голос
/ 12 октября 2010

Можете ли вы не просто использовать параметр errorClass?

$(".selector").validate({
   errorClass: "field-validation-error ui-state-error ui-corner-all"
})

Или, может быть:

$.validator.setDefaults({ 
   errorClass: "field-validation-error ui-state-error ui-corner-all"
});
...