需要一种更好的方法来使用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”]以查看检查的内容和不检查的内容。