jQueryvalidation:初始/动态validation复选框

我正在使用jqueryvalidation插件: jQueryvalidation 。 现在,我有一个带有简单validation方法的代码片段,用于根据给定参数validation已选中复选框的数量

$.validator.methods.cbMinRequired = function (value, element, param) { return $(element).parent().find(":checked").length >= param; }; $(function () { // validate the comment form when it is submitted $("#myform").validate({ keyup: true, keypress: true, click: true, change: true, debug: true, errorClass: "invalid", rules: { mycheckboxes: { cbMinRequired: 1 } } }); }); 

看看我的小提琴: jsFiddle复选框vaidation示例

如你所见,我有一个问题。

我必须首先触发“提交”来validation表单。 但我想在加载后validation它。 我认为没有最初触发提交的选项,因为最后我想用这个按钮触发一个’保存动作’,在页面加载后不应该调用它。

任何一种想法如何应对这个?

你的代码:

 $(function () { $("#myform").validate({ keyup: true, keypress: true, click: true, change: true, debug: true, errorClass: "invalid", rules: { mycheckboxes: { cbMinRequired: 1 } } }); }); 

您的代码存在一个主要问题: 此插件没有此类选项,称为keyupkeypressclickchange 它们被称为onkeyuponfocusoutonclickonsubmit ,默认情况下它们已经“真实”……在不破坏插件的情况下,它们不能设置为true 。 您只能将它们设置为false才能禁用,或将它们设置为自定义function。

然后,您可以使用.valid()方法在任何时候以编程方式触发validation测试。

 $("#myform").valid(); 

这将触发页面加载validation…

 $(function () { $("#myform").validate({ // initialize the plugin // options }); $("#myform").valid(); // trigger validation on page load }); 

您的DEMO更新 : http : //jsfiddle.net/sVwFb/4/

您可以调用.valid()方法来触发validation而不提交。

 if (!$("#myform").valid()) { // Complain } 

查看我的小提琴版本,它会在页面加载时显示validation消息。

Barman是对的,但是如果你想提交onload并在第二次提交时处理提交,你可以使用一个标志变量并提交。

 $('#myform').submit(); submitEnabled = true; 

这里 jsFiddle更新了。