我有一个非常简单的事情,但是你可以想象,我从IE Developer调试器那里得不到任何帮助! :)
我有这个方法,我根据选择菜单选项添加了一个字段长度条件。
$.validator.addMethod("netwkdigit", function(value, element) {
var loannumentered = LOAN_NUM.value;
if(acctloc.value != "Network" && loannumentered.length > 10 ) {
return false;
}
else {
return this.optional(element) || value == value.match(/^[0-9 ]+$/);;
}
}, "Only 10 numbers allowed for the loan if network is not chosen.");
这完全像我期望的那样在Chrome中运行,但不是IE。其余的jQuery验证条件如下所示。
rules: {
acctloc: {
required: true
},...
LOAN_NUM: {
required: true,
number: true,
netwkdigit: true,
minlength: 10,
maxlength: 13,
},
然后还有其他jQuery验证规则,但它们与此无关。参考上面的内容,如果选择选项不是网络,我希望它只有10位数,否则为13.
现在,在方法中,我没有引用表单名称本身,但我已经在表单的主jQuery验证函数中引用了它。 我不认为这很重要,但我不确定。
对此的任何反馈都将不胜感激。
我在上面添加了一个小片段来显示acctloc参考。
答案 0 :(得分:0)
这完全像我期望的那样在Chrome中运行,但不是IE
如上所述,它不适用于任何浏览器。
您的代码......
LOAN_NUM: {
required: true,
number: true,
netwkdigit: true,
minlength: 10,
maxlength: 13,
},
我不知道你在哪里得到acctloc
变量;而且您无法从此处访问LOAN_NUM
...
$.validator.addMethod("netwkdigit", function(value, element) {
var loannumentered = LOAN_NUM.value; // <- here!
if (acctloc.value != "Network" && loannumentered.length > 10 ) {
....
LOAN_NUM
仅代表name
方法的rules
对象中正在评估的字段的.validate()
属性。它不是一个可以在任何其他地方使用的全局变量。
但是,由于LOAN_NUM.value
似乎表明您想要此字段的“值”,只需使用value
方法提供的addMethod()
参数...
$.validator.addMethod("netwkdigit", function(value, element) {
var loannumentered = value; // value = the value of the field
....
或者,如果要访问.addMethod()
中的其他字段的值,请使用jQuery:
$('[name="acctloc"]').val(); // value of 'acctloc'
$('[name="LOAN_NUM"]').val() // value of 'LOAN_NUM'