jQuery验证IE7中不支持$ .validator.addClassRules()吗?

时间:2014-03-07 16:13:30

标签: jquery jquery-validate internet-explorer-7

我在IE7中遇到以下脚本的一些问题:

$.validator.addClassRules({
   isemail: {
       email: true
   },
    required: {
        required: true
    }   
});

这在IE8和其他浏览器中完美运行但是我在IE7中遇到以下错误:

Line: 158
Char: 3
Error: Expected ':'

在我的代码中,这一行是:

isemail: {

在jQuery验证插件网站(http://jqueryvalidation.org/jQuery.validator.addClassRules/)上没有提到对此功能缺乏支持,所以我在这里缺少什么?

我使用的jQuery版本是jQuery v1.10.2。我正在使用的jQuery验证版本是1.11.1。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

引用OP

  

“非常感谢任何帮助。”

您的代码:

$.validator.addClassRules({
    isemail: {
        email: true
    },
    required: {
        required: true
    }   
});

您编写它的方式,您希望在class="isemail"元素标记中使用class="required"input

<input class="isemail" type="text" ...
<input class="required" type="text" ...

HOWEVER ,默认情况下,您已经可以将标准规则放在class属性 中,而不用 {{1}方法。

.addClassRules()

<input class="email" type="text" ... <input class="required" type="text" ... <input class="email required" type="text" ... 方法用于根据标准规则集创建复合规则,并将复合规则指定为新的.addClassRules()名称。

From the docs

  

说明:添加复合类方法 - 对于将常见的规则组合重构为单个class非常有用。

文档中的库存示例

对于多个class名称:

class

或单个jQuery.validator.addClassRules({ myClass: { required: true, minlength: 2 }, myClass2: { required: true, digits: true, minlength: 5, maxlength: 5 } }); 名称:

class

由于您没有向我们展示任何复合规则,因此您根本不需要此方法。默认情况下,规则的名称将用作jQuery.validator.addClassRules('myClass', { required: true, minlength: 2 } }); 名称。 (有例外:只能通过class声明可以使用布尔值声明的规则。

class

你甚至可以模拟一个复合规则(同样,这是没有 <input class="required" type="text" ... <input class="email" type="text" ... )。

.addClassMethod()

引用OP

  

“...... [{1]}在IE7中不支持?....没有提到jquery validate插件网站上缺少对此函数的支持,所以有什么我的我在这里失踪了?“

你可能已经发现了一个特定于IE7的错误,但是自usage of IE7 is practically zero以来,我认为我不会期待修复甚至担心它太多。

但是,通过上面的简单建议,您无需使用<input class="required email" type="text" ... 方法,并将继续支持IE7。


修改

如果您无法更改HTML标记,则可以添加到.addClassRules()的{​​{3}}。这会将.addClassRules()分配给已包含class的每个元素。

.email