Почему бы не подключить вашу функцию к тому же событию, которое вызывает 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.