JQuery.Validate добавление динамических правил с сообщениями
У меня есть форма, на которой я использую jquery.validate. Сначала я вызываю проверку с помощью набора правил и пользовательских сообщений...
$("#formName").validate( {
rules: {
myExistingInput: {
required: true
}
},
messages: {
myExistingInput: {
required: "Enter something"
}
},
ignore: null, // include hidden fields (see below)
submitHandler: function(form) {
// do stuff
},
invalidHandler: function(event, validator) {
// do stuff (some of the fields may have been hidden by a collapsible panel
// if there is an error on one of those fields, expand the panel so the error
// becomes visible)
}
});
Позже я динамически добавляю поля в форму и добавляю правила для этих полей тоже...
$("#formName").append(...);
$("#newInputName").rules("add", {
required: true,
messages: {
required: "Enter something else"
}
});
Если я затем отправлю форму, я получаю сообщение об ошибке из jquery.validate...
Исключение произошло при проверке элемента newInputName, проверьте Метод 'messages'.TypeError: Невозможно получить свойство 'call' of undefined или нулевая ссылка
Отладка в браузере, я вижу, что ошибка вызывается из функции "проверка" и что для переменной "метод" задано "сообщения".
Если я удалю сообщения от вызова к правилам ( "добавить",...
$("#newInputName").rules("add", {
required: true
});
он работает так, как ожидалось, но, очевидно, теперь у меня нет пользовательских сообщений об ошибках.
Я видел много примеров здесь, на SO, что указывает на то, что мой синтаксис верен. Любые предложения?
BTW: плагин проверки jQuery - v1.11.0 - 2/4/2013
Ответы
Ответ 1
Ваш код, кажется, работает без ошибок, поскольку вы его разместили.
DEMO с поддержкой DOM: http://jsfiddle.net/UZTnE/
DEMO с PageInit и jQuery Mobile: http://jsfiddle.net/xJ3E2/
$(document).on("pageinit", function () {
$('#myform').validate({ // initialize the plugin
rules: {
field1: {
required: true
}
},
messages: {
field1: {
required: "Enter something"
}
}
});
$('[name*="field"]').each(function () {
$(this).rules('add', {
required: true,
messages: {
required: "Enter something else"
}
});
});
});
HTML
<form id="myform">
<input type="text" name="field1" />
<input type="text" name="field2" />
<input type="submit" />
</form>
BTW
...
ignore: null, // include hidden fields
должен быть...
ignore: [], // include hidden fields
Смотрите: jQuery Validate - включить проверку скрытых полей
Ответ 2
$(document).ready(function(){
$("#controlId").rules("add", {
required : true,
messages : { required : 'field is required.' }
});
});
Ответ 3
как ответ на эту старую проблему, мне это нравится, чтобы получить meassges внутри объекта rules.
После добавления правил вы можете добавлять такие сообщения:
var inputRules = $('input').rules();
inputRules.messages = {required: 'your message'};
![введите описание изображения здесь]()
Удачи!