Поскольку все, очевидно, заинтересованы в ответе на этот вопрос, вот следующий шаг в моем стремлении к ответу!
Я добавил в плагин методы, которые позволяют добавлять сообщения классов и исправляют сообщение по умолчаниюобработчик для их выбора.
Добавлен перед 'customMetaMessage'
customClassMessage: function (element, method) {
//Get the elements class(es)
var classes = $(element).attr("class").split(" ");
//return any message associated with said class and method
var m = $.validator.messages[classes[0]];
return m && (m.constructor == String
? m
: m[method]);
},
Исправлено 'defaultMessage', чтобы включить вызов вышеупомянутого метода
defaultMessage: function (element, method) {
return this.findDefined(
this.customMessage(element.name, method),
this.customMetaMessage(element, method),
this.customClassMessage(element, method),
// title is never undefined, so handle empty string as undefined
!this.settings.ignoreTitle && element.title || undefined,
$.validator.messages[method],
"<strong>Warning: No message defined for " + element.name + "</strong>"
);
},
Добавлен 'Метод addClassMessages
addClassMessages: function (className, messages) {
if (className.constructor == String) {
$.validator.messages[className] = messages != undefined ? messages : $.validator.messages[className];
}
else {
$.extend(this.messages, className);
}
},
Я пока не смог разобраться, как прикрепить эти дополнительные методы вне плагина.По крайней мере, мне не нужно объявлять сообщения об ошибках в атрибуте 'class'.
jQuery.validator.addClassMessages({
amount: {
required: "Amount is required",
range: "Amount must be between 0 and 2,000,000",
digits: "Amount must be numeric"
}
});