我搜索了堆栈溢出,无法找到我的问题的答案。
我正在使用bassistance jquery validation plugin,除了一个特定的部分,自定义方法之外,它运行良好。
方法正在运行它只是调用$('selector')。valid()告诉我元素是无效的,即使它应该是有效的。
这是由于this.optional(元素)返回“dependency-mismatch”。
我的问题是:
检查元素上的可选项时,依赖项不匹配意味着什么?
依赖是否意味着它是可选的,但是还有其他依赖项吗?
我的自定义方法应该检查“dependency-mismatch”的可选字段??
我不清楚回归的原因是什么。
我的自定义方法是否也会返回依赖项不匹配?或者我应该处理它?</ p>
这是我的自定义方法:
$.validator.addMethod(
"ukphonenumber",
function (value, element, validate) {
if (validate) {
var regexp = "\\s*\\(?((\\+0?44)?\\)?[ \\-]?(\\(0\\))|0)((20[7,8]{1}\\)?[ \-]?[1-9]{1}[0-9]{2}[ \\-]?[0-9]{4})|([1-8]{1}[0-9]{3}\\)?[ \\-]?[1-9]{1}[0-9]{2}[ \\-]?[0-9]{3}))\\s*";
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
}
else {
return true;
}
},
"Please check your input."
);
这将规则添加到我的输入中:
$("#<%=txtTelephoneNumber.ID %>").rules("add", {
required: false,
ukphonenumber: true,
messages: {
required: "Please enter your telephone number",
ukphonenumber: "Your telephone number is invalid"
}
});
答案 0 :(得分:1)
我还通过电子邮件向图书馆的开发人员发送了回复:这解决了问题。
有没有理由使用required:false而不是required:true?如果不需要该字段,请省略所需规则,而不是将其设置为false。
您也可以尝试在自定义方法中省略对this.optional(元素)的调用。
此致 JORN
答案 1 :(得分:-1)
这有效:
return (this.optional(element) != false) || re.test(value);