从3个必填字段验证器中选择至少一个复选框

时间:2013-04-03 20:03:53

标签: asp.net checkbox jquery-validate validation

我正在尝试让我的代码放入必需的字段验证器,因此至少会从三个中选择一个复选框。 这是我的代码:

<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,但由于设计问题,我只能使用单个复选框控件。 知道我怎么能强迫&#34;强迫&#34;用户选择至少一个复选框? 在此先感谢Laziale

3 个答案:

答案 0 :(得分: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;
} 

Custom Validator

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

答案 1 :(得分:1)

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

DEMO: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" />

答案 2 :(得分:0)

由于验证器是“每个控件”,因此没有一个单一的开箱即用解决方案。你必须自己实现它。它应该很容易,就像添加必需的字段验证器一样简单......

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