JQuery 验证 - 如何将标题属性设置为错误消息
在 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());
}
}
});
In JQuery validation the default behavior on an error is to create a label like so:
<label for="FirstName" generated="true" class="error">This field is required.</label>
Is it possible to change it so that it will output this instead (with a title attribute set to the error message)?
<label for="FirstName" generated="true" class="error" title="This field is required.">This field is required.</label>
I've tried the highlight method, but the label has not been created yet:
$("#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());
}
}
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
好吧,试试这个...
基本上我们只是将设置标题属性的部分延迟 10 毫秒,这样我们就可以确保首先创建标签元素。
希望这有帮助
ok try this...
basically we just delay the part where we set the title attribute for 10ms so we are sure that the label element is created first.
hope this helps
试试这个。
无需黑客攻击
try this instead.
no hacks required
我有点晚了,但偶然发现了这个问题,另一个解决方案是使用 errorPlacement 回调。
editid:同时删除生成的属性,否则在重新应用消息时编辑字段后消息文本会刷新。
I'am a bit late, but stumbled upon this question, and another solution would be to use the errorPlacement callback.
editid: also remove the generated attribute, else the message text gets refreshed after editing the field when the message is re-applied.