2015-04-06 69 views
0

由于真正的验证应该和服务器端发生,我希望jQuery只验证,如果需要的字段不是空的。所以,我已经得到了这些默认值:在jQuery验证插件,如何验证必填字段为空,(没有语法验证)?

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

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

据我得到了他们的documentation设置属性,如:rules>emailrules>url应该做的伎俩......但很显然它不?

回答

0

由于这是未执行在写作时的最新版本(1.13.1)正如Sparky在他的回答中所述,我已经提出了几行代码来完成外部记录插件功能。分享:

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插件设置中的每个单独字段分配规则。

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

干杯

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()任何规则。如果您试图“移除”已通过任何其他方式实施的jQuery验证规则,则可以使用the .rules('remove') method

但是,我质疑你的整个方法。为什么要首先分配email规则,以后才能删除它。 在你的情况下,没有足够的信息或代码显示你知道你在做什么或者是什么被破坏。


编辑

通过评论,据悉,正在使用的email规则,因为现场有HTML 5特性type="email",该插件自动拾取并分配email规则。

如果您不想要email规则,那么您不能使用type="email"字段。使用type="text"并避免其他HTML 5验证属性。

+0

重评,对不起: 你是说(而不必为每个单独的领域做到这一点),它是不可能关闭所有的验证规则,除了'required'?回答你关于我的方法的问题。我没有分配任何规则,这是默认情况下发生的,我试图阻止它。我只需要检查必填字段是否为空。不,我不想要HTML5验证。另外我知道jQuery Validate插件与服务器端验证无关(我已经构建它),谢谢。我所需要的只是jQuery验证插件,只有在必填字段为空时才会检查。没有其他的。 –

+0

@ Alph.Dev,**默认情况下,这怎么可能发生?**有些东西是告诉插件首先分配这些规则,这是完全不存在的问题。 – Sparky

+0

没有什么可以忽略的。我有多种形式的网站。在JS中,只有在问题描述+此行之后发布的代码:'$('form')。validate();'。 –