Плагин проверки jQuery - опция showErrors - errorContainer не скрывается / отображается - PullRequest
5 голосов
/ 03 июля 2011

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

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

Следующие опции скрывали и показывали строки ошибок нормально, но сообщение об ошибкев каждой строке ошибки отображалась полная конкатенация каждого сообщения об ошибке:

$('#myform').validate({
    rules: {
        firstName: "required",
        lastName: "required"
    },
    messages: {
        firstName: "Enter your first name.",
        lastName: "Enter your last name."
    },
    errorContainer: '.errorRow',
    errorLabelContainer: '.errorRow.appValueColumn',
    errorPlacement: function(error, element) {
        error.appendTo( element.parent().next() );
    }
});

, поэтому я попытался использовать опцию showErrors следующим образом:

  $('#myform').validate({
        rules: {
            firstName: "required",
            lastName: "required"
        },
        messages: {
            firstName: "Enter your first name.",
            lastName: "Enter your last name."
        },
        errorContainer: '.errorRow',
        errorContainer: '.errorRow.appValueColumn',
        showErrors: function(errorMap, errorList) {
        $.each(errorMap, function(key, value) {
       $('#'+key).parent().next().children('.appValueColumn').html(errorMap[key]);
});

Что ж, теперь все ошибкиразделены и показаны в правильном месте, но я не могу получить .errorRows, чтобы показать.Что я здесь не так делаю?

Большое спасибо

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Если вы посмотрите на источник подключаемого модуля проверки для метода showErrors, вы получите:

this.settings.showErrors
            ? this.settings.showErrors.call( this, this.errorMap, this.errorList )
            : this.defaultShowErrors();

Это означает, что если вы предоставите пользовательский обработчик для этого метода, поведение по умолчанию не будет выполнено.

Вы можете вызвать this.defaultShowErrors () в конце вашего собственного обработчика showErrors, который станет:

showErrors: function(errorMap, errorList) {
    $.each(errorMap, function(key, value) {
        $('#'+key).parent().next().children('.appValueColumn')
                  .html(errorMap[key]);
    });
    this.defaultShowErrors();
});

Надеюсь, это поможет!

0 голосов
/ 10 апреля 2013

Убедитесь, что вы используете имя класса без начальной точки в этих строках:

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