Javascript 如何用不同的错误消息验证这两个字段?
我有两个字段:名称查询和公司ID。它们需要满足以下条件:Javascript 如何用不同的错误消息验证这两个字段?,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我有两个字段:名称查询和公司ID。它们需要满足以下条件: 当这2个字段中的1个有效时,即不为空,并且显示“请填写…”消息时,可以提交表单 这两个字段都在向上键和向外聚焦时进行验证 对于“公司Id”字段,它会在向上键时与正则表达式进行检查,并将焦点调出,如果无效,则无法提交表单,并显示消息“公司Id格式无效” 以下是我的解决方案: var myForm=$(“#myForm”); $.validator.addMethod(“regx”,函数(值,元素,regexpr){ 返回regexpr.t
var myForm=$(“#myForm”);
$.validator.addMethod(“regx”,函数(值,元素,regexpr){
返回regexpr.test(值);
},函数(参数,元素){
返回“无效的公司ID格式”
});
myForm.validate({
规则:{
名称查询:{
需要_组中的_:[1',.mygroup']
},
公司ID:{
需要来自组[1'.mygroup']的组[U],
regx://^$|^[A-Za-z][A-Za-z]\d\d\d\/\d\/\w\w\w+$/
}
},
信息:{
名称查询:{
必填:“请填写姓名查询”
},
公司ID:{
必填:“请填写公司ID”
}
},
errorClass:“警报”,
onkeyup:函数(元素){
这个,元素(元素),;
},
onfocusout:函数(元素){
这个,元素(元素),;
},
突出显示:函数(元素,errorClass){
$(元素).addClass(错误类);
},
submitHandler:函数(表单){
$(“p”).html('已提交表单')
},
invalidHandler:函数(表单){
$(“p”).empty();
}
})
input.alert{
边框:1px纯红;
}
label.alert{
颜色:红色;
}
姓名查询:
公司编号:
“…显示默认消息“请至少填写其中一个字段”。有什么建议吗?”
它显示了来自\u组的require\u的默认消息,因为您尚未为此规则/方法定义任何自定义消息
相反,您在required
规则/方法上设置了一条自定义消息,这是一条您甚至没有使用的规则
规则/方法的自定义消息必须与该规则/方法的名称相对应,在本例中称为require\u from\u group
// messages object/option
messages: {
// name attribute of the field
nameQuery: {
// name of the rule/method being used
require_from_group: "Please fill in name query"
},
companyId: {
require_from_group: "Please fill in company ID"
} ....
注意:在自定义方法中,除非动态更改消息,否则不需要函数返回消息。相反,您可以只指定一个字符串作为消息而不是函数
$.validator.addMethod(
// name
"regx",
// method
function (value, element, regexpr) {
return regexpr.test(value);
},
// message
"Invalid company ID format" // just the string in this case
);
此外,您甚至不需要为Regex编写自定义方法,因为附加方法文件已经包含一个名为pattern
的规则,该规则将执行此操作
....
companyId: {
require_from_group: [1, '.mygroup'],
pattern: '^$|^[A-Za-z][A-Za-z]\d\d\d\/\d\/\w\w\w\w+$'
....
最后,无论您使用高亮显示
执行什么操作,都应该使用取消高亮显示
进行反转
....
unhighlight: function (element, errorClass) {
$(element).removeClass(errorClass);
}, ....
您可能还想考虑更新jQuery验证版本,因为V1.12.0在这一点上已经超过五年(2014年4月)。
演示:
var myForm=$(“#myForm”);
myForm.validate({
规则:{
名称查询:{
需要_组中的_:[1',.mygroup']
},
公司ID:{
需要来自组[1'.mygroup']的组[U],
模式:“^$|^[A-Za-z][A-Za-z]\d\d\d\/\d\/\w\w\w+$”
}
},
信息:{
名称查询:{
需要来自\u组的\u:“请填写姓名查询”
},
公司ID:{
需要_组的_:“请填写公司ID”,
模式:“无效的公司ID格式”
}
},
errorClass:“警报”,
onkeyup:函数(元素){
这个,元素(元素),;
},
onfocusout:函数(元素){
这个,元素(元素),;
},
突出显示:函数(元素,errorClass){
$(元素).addClass(错误类);
},
取消高亮显示:函数(元素,errorClass){
$(元素).removeClass(错误类);
},
submitHandler:函数(表单){
$(“p”).html('已提交表单')
},
invalidHandler:函数(表单){
$(“p”).empty();
}
})
input.alert{
边框:1px纯红;
}
label.alert{
颜色:红色;
}
姓名查询:
公司编号:
您是否已尝试将必需的设置为所有字段mbrequire\u from_group
在您的情况下是不够的?@Egor S.是的,我尝试过,并且所有字段中的结果都需要验证,而不是2个字段中的1个。如果您想要require\u from_group
上的自定义消息,然后将自定义消息设置为“组中的require\u”
,而不是像您所做的那样设置为“required”
。你是否按照我在回答最后一个问题时的建议复习了?