由于真正的验证应该并且正在服务器端进行,我希望jQuery只验证必需的字段是否为空。所以我有这些默认值:
jQuery.validator.setDefaults({
rules: {
required: true,
email: false // Experimental, does nothing?
}
});
问题是jQuery验证插件仍然执行其他检查(如电子邮件语法),这与服务器端实现不同。如何关闭它们?
我获得了documentation设置属性,例如:rules
> email
或rules
> url
到 false 应该可以做到这一点......但显然它没有?
答案 0 :(得分:0)
.setDefaults()
方法中的对象文字对此插件毫无意义......
jQuery.validator.setDefaults({
rules: {
required: true,
email: false // Experimental, does nothing?
}
});
使用rules
选项时,您只能 为各个字段分配规则...
rules: {
myFieldName: { // <- this was missing
required: true
}
}
email: false
//实验,什么都不做?
我不确定你认为email: false
应该做什么。
email: true
表示该字段将被评估为有效的电子邮件地址
email: false
什么都不做,因为它实际上与在此省略email
规则相同。否则,它只能disable the email
rule if it's set with an inline attribute。
无论如何,您无法使用.setDefaults()
来覆盖已使用.validate()
实施的任何规则。如果你想&#34;删除&#34; jQuery验证规则已经通过任何其他方式实施,您可以使用the .rules('remove')
method。
然而,我质疑你的整个方法。为什么要首先分配email
规则,以后再删除它。 在您的情况下,没有足够的信息或代码显示您正在做什么或其他什么被打破。
修改强>:
通过评论,我们了解到正在使用email
规则,因为该字段具有HTML 5属性type="email"
,插件会自动选择并分配email
规则。
如果您不想使用email
规则,则无法使用type="email"
字段。使用type="text"
并避免使用其他HTML 5验证属性。
答案 1 :(得分:0)
由于Sparky在他的回答中所写的最新版本(1.13.1)中的未实现,我已经提出了几行代码在文档插件功能之外执行此操作。分享:
jQuery.validator.methods.email = function(){return true;}
jQuery.validator.methods.url = function(){return true;}
// Etc for each method you wish to disable
此代码的作用是将原始验证方法替换为始终返回 true
的自定义函数。这样,HTML5属性可以保持不变,并且不需要为jQuery Validate插件设置中的每个单独字段分配规则。
这些自定义函数可以轻松扩展,因此如果您仍然需要,可以选择调用原始验证方法(例如存储在变量中)。
干杯