我想知道是否至少选中了复选框,所以我使用以下代码。
function CheckIfAtLeastOneBoxIsCheckedBeforeSavingForm() {
var n = $('input[id*="ckHMreq"]:checked').length;
alert(n);
}
如果未选中任何复选框,则警告消息框显示0.但是,如果选中至少一个复选框,则警报消息框甚至不会显示。
有什么理由吗?
这是浏览器生成的HTML
<input id="contentMain_cklistPayroll_gvCKList_ckHMreq_0" type="checkbox" name="_ctl0:contentMain:cklistPayroll:gvCKList:_ctl2:ckHMreq" />
我还在jquery代码中添加了“checked”。当没有选中复选框时我仍然为0,而当选中任何复选框时,我仍然没有消息框。
答案 0 :(得分:2)
您应该将:checked
添加到您的选择器,以便它只选中已选中的复选框:
function CheckIfAtLeastOneBoxIsCheckedBeforeSavingForm() {
var n = $('input[id*="ckHMreq"]:checked').length;
alert(n);
}
答案 1 :(得分:1)
您的原始代码始终显示复选框输入的数量,而不是0 ...
http://jsfiddle.net/hRubC/(已选中) http://jsfiddle.net/szuzv/(未选中)
...所以你的HTML可能存在缺陷。
正如另一个答案中所建议的那样,您似乎希望将:checked
添加到您的选择器中。
编辑:
http://jsfiddle.net/HFzJw/
至少在Chrome中,您的原始选择器可以与您添加到问题中的input
标记一起使用。也许这是特定于浏览器的问题?
编辑2: http://jsbin.com/iperin/1/edit(今天上午jsfiddle似乎失败了)
在回复您的评论时,您对所有浏览器的评价都相同,这是另一个工作示例,与您在问题中显示的标记完全匹配。您尝试此示例时是否无法正常工作?如果它确实正常工作,请检查页面上其他地方可能有什么不同。