2013-04-03 138 views
1

我想让我的代码放置必需的字段验证器,以便至少有一个复选框会从三个选择中选出。 这是我的代码:从3个必填字段验证器中选择至少一个复选框

<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但由于设计问题,我只能用一个CheckBox控件。 任何想法如何“强制”用户选择至少一个复选框? 在此先感谢,Laziale

+0

对于jQuery验证插件才能正常工作,你的'input'元素必须有一个'name'属性。一旦你纠正了这个错误,它工作得很好。请参阅:http://jsfiddle.net/q3yrd/ – Sparky 2013-04-03 21:46:46

+0

可能的重复[如何验证用户选择至少一个复选框?](http://stackoverflow.com/questions/1146234/how-to-validate-a-用户至少选择一个复选框) – 2013-10-03 22:37:39

回答

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已禁用。

+0

绝对没有理由编写自定义验证功能。他已经在使用jQuery Validation插件,但是他的'input'元素上缺少'name'属性,这已经被打破了。 – Sparky 2013-04-03 21:48:20

+0

@Sparky我在阅读问题时没有看到该标签。这个问题谈到了requiredvalidators而不是jQuery验证,所以我想这就是为什么我沿着customvalidator路线走下去的原因。我会upvote你的答案,说实话,我不知道jQuery验证插件。 – 2013-04-03 23:11:50

+0

我不是ASP专家,但我认为'jQuery Validate'与'unobtrusive validate'一起被包括在内,这是一个由MS编写的插件,与它一起使用时需要它。 – Sparky 2013-04-04 00:03:33

0

由于验证器是“每个控件”,因此没有一个新的解决方案。你将不得不自己实施它。它应该很容易,只是不如添加必需的字段验证程序...

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

1

你已经用jquery-validate标记了这个,所以我可以假设你正在使用jQuery Validate插件?如果是这样,那么您的必须在您的input字段中使用name属性。如果组中的所有复选框元素具有相同的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" /> 
相关问题