1

我正在尝试使我的代码放置必填字段验证器,以便从三个复选框中选择至少一个。这是我的代码:

<div class="left marginT5 marginR10">
 <input type="checkbox" id="chk1" value="option1" runat="server" class="styled" /> Choice1
 </div>
 <div class="left marginT5 marginR10">
<input type="checkbox" id="chk2" value="option2" runat="server" class="styled" /> Choice2
 </div>
 <div class="left marginT5 marginR10">
 <input type="checkbox" id="chk3" value="option3" runat="server" class="styled" /> Choice3
 </div>

我知道我可以使用 checkboxlist 但由于设计问题我只能使用单个复选框控件。知道如何“强制”用户选择至少一个复选框吗?提前致谢, Laziale

4

3 回答 3

3

您可以尝试使用自定义验证器。这应该让你开始:

aspx

<asp:CustomValidator ID="CustomValidator1" runat="server" 
    EnableClientScript="true"
    ErrorMessage="Please choose at least one"
    ClientValidationFunction="ValidateRadioButtons">
</asp:CustomValidator> 

javascript/jQuery

function ValidateRadioButtons(source, args) {
  var options = $('.styled');
  for (var i = 0; i < options.length; i++) {
    if (options[i].checked) {
      args.IsValid = true;
      return false;
    }
  }
  args.IsValid = false;
} 

自定义验证器

您也应该进行服务器端验证,以防 javascript 被禁用。

于 2013-04-03T20:18:56.713 回答
1

你已经标记了这个,jquery-validate所以我可以假设你正在使用 jQuery Validate 插件吗?如果是这样,您必须在字段上使用name属性input。如果组中的所有复选框元素都相同,则默认情况下name您将获得请求的行为。

演示:http: //jsfiddle.net/q3yrd/

<input type="checkbox" name="chk" id="chk1" value="option1" runat="server" class="styled" />
<input type="checkbox" name="chk" id="chk2" value="option2" runat="server" class="styled" />
<input type="checkbox" name="chk" id="chk3" value="option3" runat="server" class="styled" />
于 2013-04-03T21:46:06.987 回答
0

由于验证器是“按控制”的,因此没有一种开箱即用的解决方案。您必须自己实现它。它应该很容易,只是不像添加必填字段验证器那么容易......

最好的方法通常是在 javascript(客户端)和服务器端进行回发验证,但取决于您的应用程序,其中一个或两个都可以工作。

于 2013-04-03T20:06:40.477 回答