【发布时间】:2011-07-21 14:24:52
【问题描述】:
我是 JQuery 新手,正在使用 JQuery validation plugin。
我想问一下,如何覆盖默认消息以在与表单元素关联的标签中也显示文本。
我会收到类似这样的消息:
字段密码是必需的。而不是默认的此字段是必需的。
字段邮政编码必须至少包含 3 个字符。而不是默认值请输入至少 3 个字符。
我需要覆盖此插件的默认行为,因为我不想为每种验证类型的每个项目指定自定义消息。
有可能吗?
【问题讨论】:
我是 JQuery 新手,正在使用 JQuery validation plugin。
我想问一下,如何覆盖默认消息以在与表单元素关联的标签中也显示文本。
我会收到类似这样的消息:
字段密码是必需的。而不是默认的此字段是必需的。
字段邮政编码必须至少包含 3 个字符。而不是默认值请输入至少 3 个字符。
我需要覆盖此插件的默认行为,因为我不想为每种验证类型的每个项目指定自定义消息。
有可能吗?
【问题讨论】:
$("#signupform")
.validate({
rules: {
password: "required",
postcode: {
required: true,
minlength: 3
}
},
messages: {
password: "Field Password is required",
postcode: {
required: "Field PostCode is required",
minlength: "Field PostCode must contain at least 3 characters"
}
});
【讨论】:
invalidHandler 是否适合你,否则这里的选项似乎有限。
data-msg-required="Please enter your email address" 或 data-msg-email="Please enter a valid email address" 在 html 标记中。
这是我几天前在寻找同样的东西时发现的。不幸的是,我不记得在哪里找到了它,所以我不能把写答案的人归功于。
jQuery.extend(jQuery.validator.messages, {
required:"This field is required.",
equalTo:"Password fields do not match.",
email:"Please enter a valid email.",
});
【讨论】:
有一种更简洁的方法可以实现这一点。
使用“data-msg”或“data-msg-(rulename)”覆盖预定义规则或自定义规则的默认错误消息。 (经过jQuery验证v1.11.0,目前为v1.16.0)
<input id="pwd" name="pwd" type="password" value=""
required
data-msg-required="Field Password is required." />
<input id="postcode" name="postcode" type="text" value=""
required
data-msg-required="Field PostCode is required."
minlength="3"
data-msg-minlength="Field PostCode must contain at least 3 characters." />
【讨论】:
我需要做同样的事情,并最终创建了一个自定义方法,以便可以在多个表单之间共享它的消息。
我在类似的 Stack Overflow 问题中找到了这个答案:How can we specify rules for jquery validation plugin by class?
$.validator.addMethod(
"newEmail", //name of a virtual validator
$.validator.methods.email, //use the actual email validator
"Custom error message"
);
【讨论】:
在插件之后添加:
jQuery.extend(jQuery.validator.messages, {
required: "Your new default message",
email: "That's not a valid email"
});
如果需要,您可以将其放在单独的文件中,但请确保将其包含在插件本身之后
【讨论】: