Добавить пользовательское условие ошибки и общее сообщение об ошибке для jQuery Validate Plugin - PullRequest
1 голос
/ 12 января 2012

Я работаю над решением для приложения, которое предоставляет мне ограниченное пространство страниц и, следовательно, не может применить содержащиеся сообщения об ошибках для каждого обязательного поля.Поэтому я пытаюсь создать решение, которое выделит соответствующие обязательные поля и создаст в моей форме только настраиваемое сообщение для указанных полей, таких как адрес электронной почты, телефон и пароль.

В настоящее время я работаю с базовой оболочкой (который отлично работает для содержащихся сообщений)

    var v = $("form").validate({
        rules: {
            email: {
                required: true,
                email: true                 
            },
            confirmEmail: {
                required: true,
                email: true,
                equalTo: "#email"
            }
        },
        messages: {
            email: "Please enter a valid email address",
            confirmEmail: {
                required: "Please enter a valid verify email address",
                equalTo: "Both email addresses must be the same."
            }
        },
        errorContainer: errcontainer,
        errorLabelContainer: $("ol", errcontainer),
        wrapper: 'li',
        onkeyup: false,
        onblur: false
    });     

Заранее благодарен за любую помощь или совет.

1 Ответ

1 голос
/ 13 января 2012

То, что вы хотите сделать, это реализовать хук showErrors в плагине validate.

Вам передают карту сообщений об ошибках, а затем массив тех же сообщений, связанных сэлемент формы, который их создал.

Тогда лучше всего взять копию обработчика по умолчанию (называемого defaultShowErrors в плагине validate) и слегка его изменить (чтобы показывать только те ярлыки, которые вызаботиться о).

Тогда у вас будет что-то подобное в опциях проверки:

showErrors: function(errorMap, errorList) {
    for (var i = 0; this.errorList[i]; i++) {
        var error = this.errorList[i];
        //this is the only real part you modify
        if (error.element.id == 'email' || error.element.id == 'confirmEmail') {
            this.showLabel(error.element, error.message);
        }
        this.settings.highlight && this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);
    }
    //a whole bunch more stuff after this, from jquery.validate.js
}

Смотрите эту идею в действии здесь: http://jsfiddle.net/ryleyb/D3tfu/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...