livequery не всегда живут, когда используется с jquery.validate
-
28-09-2019 - |
Вопрос
Я использую плагин jquerylive, чтобы добавить дополнительные классы CSS в .field-Validation-Class Class, как это:
$(".field-validation-error").livequery(function () {
$(this).addClass('ui-state-error ui-corner-all');
});
Когда я получаю некоторые пролеты с этим классом, генерируемым jQuery.validate Приведенный выше код работает, но при 2-й проверке это не так.
Вот живая ссылка: http://mrgsp.md:8080/awesome/person.Нажмите на создание После нажатия Сохранить, чтобы получить сообщения проверки и нажмите еще раз на сохранении
Решение
Почему бы не подключить вашу функцию в то же событие, что триггеры подтверждают ()?
Обновлять
Я прочитал другие комментарии и увидел, что вы используете XVal, немного прочитайте на jQuery.validate. jquery.validate галстуки во многих событиях и регистрация по обработчикам событий будут грязными. Причина, по которой LiveQuery работает впервые, заключается в том, что этикетки генерируются, если они ранее не существуют, так что событие создания делает функцию выполнения, каждый раз, когда метка просто скрыта / показана, поэтому она не запускается, но jQuery. Функция Validate's 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 выполняет настройку проверки проверки.
Другие советы
Вы не можете просто опция 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"
});