在jQuery Validate插件中,如何仅验证必填字段为空(没有语法验证)?

时间:2015-04-06 15:11:26

标签: jquery jquery-validate

由于真正的验证应该并且正在服务器端进行,我希望jQuery只验证必需的字段是否为空。所以我有这些默认值:

  jQuery.validator.setDefaults({ 
    rules: {
      required: true,
      email: false // Experimental, does nothing?
    }
  });

问题是jQuery验证插件仍然执行其他检查(如电子邮件语法),这与服务器端实现不同。如何关闭它们?

我获得了documentation设置属性,例如:rules> emailrules> url false 应该可以做到这一点......但显然它没有?

2 个答案:

答案 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应该做什么。

无论如何,您无法使用.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插件设置中的每个单独字段分配规则。

这些自定义函数可以轻松扩展,因此如果您仍然需要,可以选择调用原始验证方法(例如存储在变量中)。

干杯