代码之家  ›  专栏  ›  技术社区  ›  JK.

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

  •  2
  • JK.  · 技术社区  · 16 年前

    在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>
    

    我尝试了highlight方法,但尚未创建标签:

    $("#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 回复  |  直到 8 年前
        1
  •  4
  •   ricecake5    16 年前

    好吧,试试这个…

    $("#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);     
        }
    });
    

    基本上,我们只是将标题属性的设置部分延迟10毫秒,这样我们就可以确定标签元素是首先创建的。

    希望这有帮助

        2
  •  0
  •   Leon    13 年前

    试试这个。

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

    不需要黑客

        3
  •  0
  •   Boscabouter    8 年前

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