为什么jQuery验证方法在Chrome中工作但不在IE中工作?

时间:2017-01-19 18:42:50

标签: jquery google-chrome internet-explorer jquery-validate

我有一个非常简单的事情,但是你可以想象,我从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参考。

1 个答案:

答案 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'