为什么 jQuery 验证方法在 Chrome 中有效,但在 IE 中无效?
why does jQuery validate method work in Chrome but not IE?
我得到的可能是一件非常简单的事情,但正如您想象的那样,我没有从 IE Developer 调试器获得任何帮助! :)
我添加了这个方法,根据 select 菜单选择使字段长度有条件。
$.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 验证规则,但它们与此无关。参考上述内容,如果 select 选择不是网络,我希望它最多只有 10 位数字,否则为 13。
现在,在该方法中,我并没有在那里引用表单名称本身,但我已经在表单的主要 jQuery 验证函数中引用了它。
我认为这无关紧要,但我不确定。
如有任何反馈,我们将不胜感激。
我在上面添加了一个小片段来显示 acctloc 引用。
This works perfectly as I expect it to in Chrome, but not 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
仅表示 .validate()
方法的 rules
对象中正在评估的字段的 name
属性。它不是可以在其他任何地方使用的全局变量。
但是,由于 LOAN_NUM.value
似乎表明您想要此字段的 "value",只需使用 addMethod()
方法已经提供的 value
参数即可。 ..
$.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'
我得到的可能是一件非常简单的事情,但正如您想象的那样,我没有从 IE Developer 调试器获得任何帮助! :)
我添加了这个方法,根据 select 菜单选择使字段长度有条件。
$.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 验证规则,但它们与此无关。参考上述内容,如果 select 选择不是网络,我希望它最多只有 10 位数字,否则为 13。
现在,在该方法中,我并没有在那里引用表单名称本身,但我已经在表单的主要 jQuery 验证函数中引用了它。 我认为这无关紧要,但我不确定。
如有任何反馈,我们将不胜感激。
我在上面添加了一个小片段来显示 acctloc 引用。
This works perfectly as I expect it to in Chrome, but not 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
仅表示 .validate()
方法的 rules
对象中正在评估的字段的 name
属性。它不是可以在其他任何地方使用的全局变量。
但是,由于 LOAN_NUM.value
似乎表明您想要此字段的 "value",只需使用 addMethod()
方法已经提供的 value
参数即可。 ..
$.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'