Проверка JQuery - как установить атрибут title для сообщения об ошибке - PullRequest
2 голосов
/ 01 июня 2010

При проверке JQuery поведение по умолчанию для ошибки заключается в создании метки следующим образом:

<label for="FirstName" generated="true" class="error">This field is required.</label>

Можно ли изменить его так, чтобы он выводил его вместо (с атрибутом title, установленным в сообщении об ошибке)?

<label for="FirstName" generated="true" class="error" title="This field is required.">This field is required.</label>

Я пробовал метод выделения, но ярлык еще не создан:

$("#form").validate({
    highlight: function (element, errorClass) {
        var label = $("label[for=" + element.id + "]");  // but label doesn't exist yet so this doesnt work
        if (label && label.length > 0) {  // label.length is always 0
            label.attr('title', label.text());
        }
    }
});

Ответы [ 3 ]

4 голосов
/ 01 июня 2010

хорошо, попробуйте это ...

$("#form").validate({
    highlight: function (element, errorClass) {
        setTimeout(function() {
            var label = $("label[for=" + element.id + "]");
            if (label && label.length > 0) { 
                label.attr('title', label.text());
            }
        }, 10);     
    }
});

В основном мы просто задерживаем часть, в которой мы устанавливаем атрибут title, на 10 мс, поэтому мы уверены, что элемент label создается первым.

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

0 голосов
/ 23 ноября 2017

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

editid: также удалить сгенерированный атрибут, иначе текст сообщения обновляется после редактирования поля при повторном применении сообщения.

var validator = $('#form1').validate({
  errorPlacement: function(error, element) {
    element.attr('title', error.text());
    error.text('!');
    error.removeAttr('generated');
    error.appendTo(element.parent());
    return true;
  }
}
0 голосов
/ 22 августа 2012

попробуйте вместо этого.

var validator = $('#form1').validate({
        highlight: function (element, errorClass, message) {
            var errorMessage = validator.errorMap[element.name]
            $(element).attr('title', errorMessage);
        }
    });

взлома не требуется

...