JQuery验证 - 如何将title属性设置为错误消息

时间:2010-06-01 03:40:56

标签: jquery jquery-plugins jquery-validate

在JQuery验证中,错误的默认行为是创建如下标签:

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

是否可以更改它以便输出它(将标题属性设置为错误消息)?

<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 个答案:

答案 0 :(得分:4)

好吧试试这个......

$("#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属性10ms的部分,所以我们确定首先创建label元素。

希望这会有所帮助

答案 1 :(得分:0)

试试这个。

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

不需要黑客

答案 2 :(得分:0)

我有点迟了,但偶然发现了这个问题,另一个解决方案就是使用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;
  }
}