需要一种更好的方法来使用jqueryvalidation插件validationASP.NET复选框吗?

问题:

我想使用jqueryvalidation插件validation一些ASP.NET复选框(见: http : //bassistance.de/jquery-plugins/jquery-plugin-validation/ )

它是什么:

无法设置ASP.NET复选框的名称属性(或者是吗?)。 它将在渲染控件时自动设置并可以使用

 

所以有两个复选框如下:

 Email
Phone

将呈现给:

   

将ASP.NET与jqueryvalidation插件混合可能是一团糟,但我更喜欢jqueryvalidation插件,它适用于输入和其他字段。

问题是,jqueryvalidation插件想要使用复选框的name-attribute对复选框进行分组。 此名称属性应等于所有复选框和组。

我做了什么:

我使用jquery为所有复选框添加了一个规则:

 $("#[id*='AcceptCheckBox']").each(function() { $(this).rules("add", { minchecked: 1 }); }); 

并添加了我自己的规则检查复选框:

 jQuery.validator.addMethod("minchecked", function(value, element, param) { var noOfChecked = $("#[id*='AcceptCheckBox']:checked").length; return noOfChecked >= param; }, "Error"); 

(此规则适用于其ID包含AcceptCheckBox的复选框,但在此示例中可以正常使用)。

我打电话的时候:

 var result = $("#aspnetForm").validate().form(); 

如果我的validation成功或失败,它将完美返回!

但:

1)我觉得这不是一个非常干净和漂亮的解决方案。 有什么好建议吗?

2)当我运行validate()。form()时,它将遍历所有复选框,并为每个复选框检查所有其他复选框。 那真的没必要。 我怎么能避免这个?

总的来说,你的代码对我来说确实很好。 我认为你已经干净地处理了asp:checkbox限制(你不能为asp:复选框指定’name’属性)。

就个人而言,我会使用常规的HTML复选框。

 

(我添加了一个标签标签,以便用户可以点击标签(更大的目标)来选中/取消选中该复选框。)

上面将简化您的jQuery代码。

在服务器端代码上,检查Request.Form [“acceptCheckBox”]以查看检查的内容和不检查的内容。