2014-03-07 65 views
0

我有在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。

任何帮助将不胜感激。

+0

jQuery Validate 1.11.1只通过jQuery 1.9进行了测试。 – Sparky

+0

您是否正在测试IE 7的真***副本? – Sparky

+0

是的。我正在测试安装在虚拟机上的IE7版本。 – jezzipin

回答

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" ... 

无论其,默认情况下,你已经可以代替标准的规则在class属性没有.addClassRules()方法。

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

.addClassRules()方法用于从套的标准规则创建化合物规则和分配复合规则到一个新的class名称。

From the docs

说明:添加化合物类方法 - 的规则常见组合重构为一个单一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 
    } 
}); 

既然你还没有表现出任何我们复合规则,你不需要这种方法d。默认情况下,规则的名称将作为class名称。 (也有例外:只可以用一个布尔值声明可以通过class声明规则

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

你甚至可以模拟复合规则(再次,这是没有.addClassMethod()) 。

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

报价OP

” ... [是] .addClassRules()不支持IE7中....没有为jQuery开发这个功能没有缺乏支持提验证插件网站,所以有什么我在这里失踪?“

您可能已经发现特定于IE7中的错误,但是因为usage of IE7 is practically zero,我不认为我会期待修复,甚至不用担心太多。

然而,通过采取以上我简单的建议,你否定了.addClassRules()方法的需要,将继续支持IE7。


编辑

如果你不能改变的HTML标记,你可以添加到classusing jQuery。这会将.email分配给已包含.isemail的每个元素。

$(document).ready(function() { 

    $('.isemail').addClass('email'); // put this at the top 

}); 
+0

在这种情况下,我需要修改基本的HTML。通常我们使用ExtJS进行验证,而我们用于电子邮件的类是isemail。许多政府机构和部门仍然支持IE7,所以我们必须为这款浏览器提供支持。最终,一个简单的解决方案就是使用jQuery .addClass方法将一类电子邮件分配给任何类别为ieemail的电子邮件。 – jezzipin

+0

@jezzpin,使用jQuery,您可以使用'isemail'类将'email'类分配给每个元素。 – Sparky

+0

'$('。isemail')。addClass('email')' – Sparky