1

我想知道是否至少选中了一个复选框,所以我使用以下代码。

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 代码中添加了“已检查”。当没有选中任何复选框并且选中任何复选框时没有消息框时,我仍然得到 0。

4

2 回答 2

2

您应该添加:checked到您的选择器,以便它只选择选中的复选框:

function CheckIfAtLeastOneBoxIsCheckedBeforeSavingForm() {
    var n = $('input[id*="ckHMreq"]:checked').length;
    alert(n);
}
于 2013-01-30T19:44:44.937 回答
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 似乎今天早上倒了)

为了回应您对所有浏览器都得到相同的评论,这是另一个工作示例,与您在问题中显示的标记完全匹配。这个例子在你尝试的时候是不是不能正常工作?如果它确实工作正常,请检查您页面上其他地方的其他可能不同之处。

于 2013-01-30T19:45:24.877 回答