2010-05-31 127 views
4

我正在学习JQuery,主要感谢Stack Overflow的积极参考。我需要一个函数来检查具有相同CSS类的元素中的所有复选框。它应该返回true,如果至少其中一个被选中。元素中还有其他与检查无关的框。JQuery - 至少有一个复选框被选中

CSS类是不必要的,只有创建一种方法来确定组中的复选框。这感觉是不好的做法,所以任何关于其他方法来确定他们的建议是受欢迎的。

回答

3

无线电由于页面布局,按钮列表不是一个选项。我用自定义验证器解决了它。

添加此JavaScript函数的页面

function ValidateDDA(s, a) { 
    a.IsValid = ($(".chk:checked", $('parentDiv')).length > 0); 
} 

然后一个的CustomValidator添加到页面

<asp:CustomValidator runat="server" ID="cvDDLCorrect" ClientValidationFunction="ValidateDDA" 
ErrorMessage="No hay resuesta correcta" CssClass="error" /> 

就像一个魅力。感谢您的建议。

20

要检查是否至少一个检查:

$(".classname:checked", container).length > 0 

“容器” 是(可选的)容器元素。

如果你想避免使用类名进行分组,您应该简单地给每个复选框相同的名字:

<input type="checkbox" name="group1" value="1" /> 
<input type="checkbox" name="group1" value="2" /> 
<input type="checkbox" name="group1" value="3" /> 

然后你就可以改变测试代码:

$("[name=group1]:checked").length > 0 
+0

很高兴知道。不幸的是,复选框是通过ASP.Net和重写UniqueID是太多的解决方案。 – Laramie 2010-05-31 06:42:20

+0

为多个复选框使用相同名称有什么意义? (除非你使用PHP并用'[]'结束这个名字)如果用户只能选择其中的一个,那么应该使用一个单选按钮。如果他可以选择多个,那么你会以这种方式失去信息。 – Tgr 2010-05-31 07:04:14

+1

当多个复选框具有相同的名称时,您不会丢失信息。如果检查多个项目,则数据将作为“value1,value2,value3”发布到服务器 – 2010-05-31 08:32:58

相关问题