jQuery Validate Plugin Добавить класс errorPlacement Error Label - PullRequest
0 голосов
/ 24 октября 2010

Используя ловушку errorPlacement, я могу добавить определенный класс к определенному элементу ошибки. Однако, как только форма пытается отправить второй раз, она теряет тот класс, который я добавил. См. Следующий код для примера.

http://www.jsfiddle.net/NU63P/1

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

Ответы [ 2 ]

2 голосов
/ 24 октября 2010

К сожалению, нет прямого способа сделать это, предоставляемого API, потому что он принял (на мой взгляд) плохое решение:

showLabel: function(element, message) {
  var label = this.errorsFor( element );
  if ( label.length ) {
    label.removeClass().addClass( this.settings.errorClass );
                   //^ right here
  }

Это то, что удаляет все ваши классы, и, к сожалению, это также последнее, что запускается в конвейере недопустимых обработчиков. Однако , он вызывается с помощью defaultShowErrors(), который вы можете назвать сами, переопределив параметр showErrors, например:

$(function() {
  $('form').validate({
    showErrors: function(errorMap, errorList) {
      this.defaultShowErrors();
      $(this.currentForm).find('label[for=text2].error').addClass('errorextra');
    }
  });
});

Вы можете проверить это здесь .


Другой вариант, если вы поддерживаете только 1019 *, поддерживающий более новые браузеры, это сделать это полностью в CSS:

label[for=text2].error { margin-left: 10px; }
0 голосов
/ 27 декабря 2010

Отлично! Спасибо!

Я использую редактор (ckeditor). С этим дополнением, которое сделано в $ ("# form1"). Validate Теперь я могу скрыть сгенерированное сообщение об ошибке, если что-то будет введено в редактор.

Вот соответствующие части моего кода ... HTH для кого-то ...

updateTextArea1 on keyup

CKEDITOR.instances.editor1.on("instanceReady", function()
             {
               //set keyup event
               this.document.on("keyup", updateTextArea1);
                //and paste event
               this.document.on("paste", updateTextArea1);

             });

получить данные editor1, обновить редактор и скрыть сообщение об ошибке

function updateTextArea1()
        {
            CKEDITOR.tools.setTimeout( function()
            { 
            var oEditor1 = CKEDITOR.instances.editor1;
            var content1 = oEditor1.getData();

            CKEDITOR.instances.editor1.updateElement();
            $(".error.errorextra1").hide() 
            }, 0);  
        }

добавление дополнительного класса к сгенерированному сообщению об ошибке валидатора jquery

    var validator = $("#form1").validate({

        showErrors: function(errorMap, errorList) {
            this.defaultShowErrors();
            $(this.currentForm).find('label[for=editor1].error').addClass('errorextra1');
            $(this.currentForm).find('label[for=editor2].error').addClass('errorextra2');
        },
...