我正在使用复选框的控件数组来捕获多个选择
以下代码(带有两个复选框)运行良好,并按预期返回 2 的值(或者有多少)。
但是如果数组中只有一个复选框项,则返回 0(零)的长度....为什么会这样?它不应该返回1的长度吗?
我在Internet Explorer和Chrome中尝试了相同的结果。作为解决方法,我必须在数组中包含一个隐藏的伪造复选框,以确保在运行代码时始终有两个或更多项。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<script language="javascript" type="text/javascript">
function categoryOnClick() {
var selectedRows = document.searchForm.elements['categorySelect[]'];
alert(selectedRows.length);
}
</script>
</head>
<body>
<form name="searchForm" action="">
<input type="checkbox" name="categorySelect[]" id="1" onclick="categoryOnClick();"/>
<input type="checkbox" name="categorySelect[]" id="2" onclick="categoryOnClick();"/>
</form>
</body>
</html>
返回0(零)长度的代码......
<form name="searchForm" action="">
<input type="checkbox" name="categorySelect[]" id="1" onclick="categoryOnClick();"/>
</form>
答案 0 :(得分:5)
<强> Working jsFiddle Demo 强>
function categoryOnClick() {
var rows = document.getElementsByName('categorySelect[]');
var selectedRows = [];
for (var i = 0, l = rows.length; i < l; i++) {
if (rows[i].checked) {
selectedRows.push(rows[i]);
}
}
alert(selectedRows.length);
}
答案 1 :(得分:1)
在javascript中你可以做到
function categoryOnClick() {
var count = document.querySelectorAll("input[type=checkbox]").length;
var checkedElements = 0;
for (var i = 0; i < count; i++) {
checkedElements = checkedElements + parseInt((document.querySelectorAll("input[type=checkbox]")[i].checked) ? 1 : 0);
}
alert(checkedElements);
}
并在jquery中:
function categoryOnClick() {
alert($('input:checked').length)
}
希望有所帮助
答案 2 :(得分:0)
您可以使用jQuery执行此操作:
function categoryOnClickjQuery() {
var selectedRows = $('form input').attr('name', 'categorySelect[]');
alert(selectedRows.length);
}