Я пытаюсь переопределить стиль ошибки по умолчанию в jQuery.Validate(). Вместо того, чтобы настройки по умолчанию печатали темно-красную метку, я попытался создать ее вместо родителя div. Итак, вот сделка: У меня две идентичные формы, (веб-редактор может выбрать, сколько он хочет), на той же странице. Каждая форма имеет один и тот же класс: .formClass.JQuery.Validate() для идентичных форм
Код ниже определен в области $ (document) .ready и настраивает «список правил {}» для всех обязательных полей.
$(".formClass").find("input[data-val-required]").each(function() {
var name = $(this).attr("name").toLowerCase();
if (name.match("email")) {
$(this).rules('add', {
email: true
});
}
$(this).rules('add', {
required: true
});
});
и Heres основной функцией:
$(".formClass").validate({
//errorLabelContainer: '#testestets', //Displays a collection of the generated error messages
focusInvalid: true,
errorElement: "div",
wrapper: 'div', // a wrapper around the error message
errorPlacement: function (error, element) {
$(element).closest('.form-field').addClass("errorOnThis");
},
messages: {
name: {
required: "testing..",
},
},
invalidHandler: function (event, validator) {
var errors = validator.numberOfInvalids();
alert(errors);
},
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass);
}
});
Форма имеет только два поля: Имя и адрес электронной почты. Если я отправлю форму, давайте скажем нулевое значение для Name. Он выделит ввод вместе с моим желаемым стилем. Однако, если я отправлю его снова, не изменяя имя на допустимое значение, форма отправляется независимо от любых недопустимых входов. Зачем?
Другой вопрос: только моя первая форма получает эти пользовательские изменения, моя вторая форма, которая выглядит идентичной первой, по-прежнему получает сообщения об ошибках по умолчанию. Смущенный.
Есть ли способ обработки ошибок на обратный вызов, как `
highlight: function (element, errorClass, validClass) {
$(element).parents("form:first").find("input[type='submit']").attr("disabled", "disabled");
},
unhighlight: function (element, errorClass, validClass) {
if (!element.isValid()) {
highlight(element, errorclass, validClass);
} else {
$(element).parents("form:first").find("input[type='submit']").removeAttr("disabled"); }
}`
Я пробовал, но это не сработало, так что если кто-то может найти недостатки в моем коде я бы навсегда благодарен :)