如何使用jquery validate使用最少的一个输入进行validation?

我的html代码是这样的:






我的javascript代码是这样的:

 $(document).ready(function () { $('#form-product').validate(); $('[name^="test"]').each(function () { console.log('test') $(this).rules('add', { required: true, messages: { required: 'Minimal 1 input' } }); }); }); 

演示和完整代码如下: http : //jsfiddle.net/oscar11/XTtTP/6/

我想让validation动态化

如果用户没有输入任何内容然后用户提交,则会显示消息“最小1输入”

如果用户在一个文本框中输入并提交,那么它将成功。

我创建的代码仍然不完美

如果用户在一个文本框中输入然后提交,它仍然有消息“最小1输入”。 应该没有消息

我如何改进我的代码?

您的代码使它们全部成为必需。 如果您只需require_from_group组中取出一个字段,那么您将需要使用require_from_group规则。

 $(document).ready(function () { $('#form-product').validate(); $('[name^="test"]').each(function () { console.log('test') $(this).rules('add', { require_from_group: [1, $('[name^="test"]')], messages: { require_from_group: 'Minimal 1 input' } }); }); }); 

require_from_group规则是additional-methods.js文件的一部分。

演示: jsfiddle.net/nw53mw17/

我还建议您使用该插件的最新版本。 你的jsFiddle使用的是真正的旧1.10,但最新版本是1.17; 这是一个重大的区别。


编辑

要将消息组合在一起,请使用groups选项。 由于您在运行时之前不知道所有名称,因此请使用.each()来构造此参数。

 // dynamically construct groups parameter var grp = ""; $('[name^="test"]').each(function () { grp += $(this).attr('name') + " "; }); grp = $.trim(grp); var myGroups = {TESTS: grp}; // intialize plugin with options $('#form-product').validate({ groups: myGroups }); 

演示2: jsfiddle.net/nw53mw17/2/

如果您不喜欢在表单上放置此消息,请使用errorPlacement选项 。

请阅读此插件的在线文档 。