在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());
}
}
});
答案 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;
}
}