我有许多复选框,我想检查它们是否被选中(1)或未选中(0)。我想将结果放在一个数组中,以便我可以将它们发送到服务器以保存在表中。我试过以下代码:
<input class="publish" id="chkBox1" type="checkbox" checked>
<input class="publish" id="chkBox2" type="checkbox" checked>
<input class="publish" id="chkBox3" type="checkbox" checked>
<input class="publish" id="chkBox4" type="checkbox" checked>
<input class="publish" id="chkBox5" type="checkbox" checked>
<script>
$('#save-btn').click(function(evt){
evt.preventDefault();
var numberOfChBox = $('.publish').length;
var checkArray = new Array();
for(i = 1; i <= numberOfChBox; i++) {
if($('#chkBox' + i).is(':checked')) {
checkArray[i] = 1;
} else {
checkArray[i] = 0;
}
}
alert(checkArray);
});
</script>
但警报输出:
,1,0,1,0,1,1
除了undefined中的第一个索引外,这些值是正确的。共有5个复选框,但数组长度为6个索引。这是为什么?
答案 0 :(得分:4)
考虑到您编写的第一个元素是checkArray[1]
,而i
以1
开头,而不是checkArray[0]
。
将checkArray[i]
替换为for bucle
checkArray[i-1]
答案 1 :(得分:4)
在html:http://jsfiddle.net/v4dxu/
中使用正确的结束标记,以高效的方式:)
http://jsfiddle.net/L4p5r/尝试
非常好的链接:https://learn.jquery.com/javascript-101/arrays/
同样在你的html结尾你的标签/>
,即
<input class="publish" id="chkBox4" type="checkbox" checked>
休息应该有助:)
<强>代码强>
var checkArray = new Array();
$('input[type=checkbox]').each(function () {
this.checked ? checkArray.push("1") : checkArray.push("0");
});
alert(checkArray);
答案 2 :(得分:3)
如上面的答案所述,问题在于索引(i)。但是如果你想进一步简化代码,那么下面的代码呢?
var checkArray = [];
$('input.publish').each(function () {
checkArray.push($(this).is(':checked'));
});
alert(checkArray);