【问题标题】:why does jQuery validate method work in Chrome but not IE?为什么 jQuery 验证方法在 Chrome 中有效但在 IE 中无效?
【发布时间】:2017-01-19 18:42:50
【问题描述】:

我得到了一个可能非常简单的东西,但正如你想象的那样,我没有从 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 验证函数中引用了它。 我认为这无关紧要,但我不确定。

我们将不胜感激。

我在上面添加了一个小的 sn-p 来显示 acctloc 引用。

【问题讨论】:

  • 什么版本的IE?

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


【解决方案1】:

这在 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 仅表示在.validate() 方法的rules 对象内评估的字段的name 属性。它不是一个可以在其他任何地方使用的全局变量。

但是,由于LOAN_NUM.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'

【讨论】:

  • 在我上面的块中,acctloc 是选择菜单的名称,有几个选项,“网络”就是其中之一。基本上如果用户选择网络,我会允许字段值的长度,LOAN_NUM,大于 10。否则,它会禁止它。同样,它在 Chrome 中完美运行,但在 IE 中却不行。这是我目前无法解决的问题。
  • @BarryP,我根据您的代码构建了一个演示,并且它不可能适用于任何浏览器......甚至 Chrome 也在 LOAN_NUM 和 @ 上抛出 undefined 987654338@。正如您所介绍的,这些在上下文中的意义为零。 jsfiddle.net/qkaz08bu
  • @BarryP,如果您想从.addMethod() 中访问其他字段的值,请使用jQuery:$('[name="acctloc"]').val()$('[name="LOAN_NUM"]').val()
  • 谢谢,Sparky,我会试一试,但是 FWIW,我的代码在 FF 和 Chrome 中都能成功运行,只是在 IE 中不行。不过,我会尝试将此部分添加到方法中。谢谢!
  • 谢谢!那^^^做到了Sparky!我不太清楚为什么 FF 和 Chrome 对我之前的内容更加宽容,但我上面的内容是被这两个浏览器允许的。我插入了您列出的特定 jQuery 参考,并且相应地工作!非常感谢!让我知道我如何将其标记为已回答,除非您这样做。
猜你喜欢
  • 2011-03-12
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多