jquery - 需要更好的方法使用 jquery 验证插件来验证 ASP.NET 复选框吗?

标签 jquery asp.net validation checkbox

问题:

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

这一切是关于什么的:

无法设置 ASP.NET 复选框的名称属性(是吗?)。当控件被渲染并且可以使用

检索时,它会自动设置
<%= emailCheckBox.UniqueID %>

所以两个复选框如下:

<asp:CheckBox runat="server" ID="emailAcceptCheckBox" />Email<br />
<asp:CheckBox runat="server" ID="phoneAcceptCheckBox" />Phone<br />

将渲染到:

<INPUT id="ctl00_MainContentPlaceHolder_emailAcceptCheckBox" type="checkbox" name="ctl00$MainContentPlaceHolder$emailAcceptCheckBox">
<INPUT id="ctl00_MainContentPlaceHolder_phoneAcceptCheckBox" type="checkbox" name="ctl00$MainContentPlaceHolder$phoneAcceptCheckBox">

也许将 ASP.NET 与 jquery 验证插件混合在一起会很困惑,但我更喜欢 jquery 验证插件,它可以很好地处理输入和其他字段。

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

我做了什么:

我使用 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();

如果我的验证成功或失败,它都会完美返回!

但是:

1)我不认为这是一个非常干净和好的解决方案。有更好的建议吗?

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

最佳答案

总的来说,你的代码对我来说看起来不错。我认为您已经清楚地处理了 asp:checkbox 限制(您不能为 asp:checkbox 指定“name”属性)。

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

<input type="checkbox" runat="server" ID="emailAcceptCheckBox" name="acceptCheckBox" value="emailAccepted" /><label for="emailAcceptCheckBox">Email</label><br />
<input type="checkbox" runat="server" ID="phoneAcceptCheckBox" name="acceptCheckBox" value="phoneAccepted" /><label for="phoneAcceptCheckBox">Email</label><br />

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

以上将简化您的 jQuery 代码。

在服务器端代码中,检查 Request.Form["acceptCheckBox"] 以查看已检查的内容和未检查的内容。

关于jquery - 需要更好的方法使用 jquery 验证插件来验证 ASP.NET 复选框吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136507/

相关文章:

ASP.NET MVC : Adding selected CSS class to ActionLink if url matches current url

asp.net-mvc - 如何为.net core mvc应用程序集中防止脚本注入(inject)

javascript - JqG​​rid 更新特定行

javascript - Rails 3,带有远程选项的 link_to - JavaScript 仅适用于第一次单击

c# - App_Code编译不会清除旧程序集

javascript - 带有回调函数的 jQuery get() 方法

javascript - 滚动到HTML5表单验证的第一个输入错误

ruby-on-rails - 将字段名称作为参数传递给自定义验证方法 Rails 4

jquery - 如何使用 css 和 jquery 实现 100% -100px

jquery - HTML5 桌面/移动博客 - jQuery UI 还是 jQuery Mobile?