<input type="checkbox" id="mark_box0" name="mark_box[]">
<input type="checkbox" id="mark_box1" name="mark_box[]">
<input type="checkbox" id="mark_box2" name="mark_box[]">
我想在数组中获取已选中且未选中的复选框。请参考下面的示例输出数组。
Array
(
[0] => 1 //mark_box0 is checked
[1] => 0 //mark_box1 is not checked
[2] => 1 //mark_box2 is checked
)
我尝试了一些代码,但没有正常工作
var is_checked = $("input[name='mark_box[]']").map(function(){return this.value;}).get();
无论何时选中,上面的代码都返回到数组下面
Array
(
[0] => on
[1] => on
[2] => on
)
var is_checked = $("input[name=mark_box]:checked").map(function() {
return this.value;
}).get().join(",")); // returns empty array
请帮我这样做。
答案 0 :(得分:2)
您使用的方式是正确的,但您获得的值在每个州都保持不变。您必须检查是否选中了复选框。这是代码:
var is_checked = $("input[name='mark_box[]']").map(function(){
return $(this).attr("checked");
}).get();
如果您有任何疑问,请与我们联系。
答案 1 :(得分:1)
输入的graphml
属性返回值。您应该使用返回复选框状态的value
。
checked
var is_checked = $("input[name='mark_box[]']").map(function(){
return this.checked ? 1 : 0;
}).get();
&#13;
var is_checked = $("input[name='mark_box[]']").map(function(){
return this.checked ? 1 : 0;
}).get();
console.log(is_checked);
&#13;
答案 2 :(得分:1)
您需要检查checked
而不是value
$(".button").click(function() {
var checkedArray = $("input[name='mark_box[]']").map(function() {
return this.checked;
}).get();
console.log(checkedArray);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="mark_box0" name="mark_box[]">
<input type="checkbox" id="mark_box1" name="mark_box[]">
<input type="checkbox" id="mark_box2" name="mark_box[]">
<button class='button'>Submit</button>
&#13;
答案 3 :(得分:1)
你快到了。
而不是使用
var is_checked = $("input[name=mark_box]:checked").map(function() {
return this.value;
}).get().join(",")); // returns empty array
使用
var is_checked = $("input['name=mark_box[]']:checked").map(function() {
return this.value;
}).get().join(",")); // returns empty array
(注意[]
)。
使用:checked
选择器,您无需循环所有输入。它会自动为您提供所有已检查的元素。
因此$("input[name='mark_box[]']:checked")
会返回所有选中的复选框。
$(function() {
var checkedArr = $("input[name='mark_box[]']:checked");
/*for the output:*/
var print = $("input[name='mark_box[]']:checked").map(function() {
return $(this).attr('id');}).get().join(",");
console.log( print );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="mark_box0" name="mark_box[]" />
<input type="checkbox" id="mark_box1" name="mark_box[]" checked />
<input type="checkbox" id="mark_box2" name="mark_box[]" />
<input type="checkbox" id="mark_box3" name="mark_box[]" checked />
<input type="checkbox" id="mark_box4" name="mark_box[]" checked />
答案 4 :(得分:0)
我认为你需要类似下面的内容
function getValues(){
var array = [];
$("input:checkbox[name='mark_box[]']").each(function(){
array.push($(this).prop('checked') ? 1 : 0);
});
console.log(array);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="checkbox" id="mark_box0" name="mark_box[]">
<input type="checkbox" id="mark_box1" name="mark_box[]">
<input type="checkbox" id="mark_box2" name="mark_box[]">
<button type="button" onclick="getValues()">Run</button>
&#13;
答案 5 :(得分:0)
我就是这样做的:
var is_checked = [];
function updateArray(){
is_checked = [];
$("input[name='mark_box[]']").each(function (val, i) {
var chkVal = (this.checked ? "1" : "0");
is_checked.push(chkVal);
});
console.log(is_checked);
}
updateArray();
$("input[name='mark_box[]']").change(function(){
updateArray();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="mark_box0" name="mark_box[]">
<input type="checkbox" id="mark_box1" name="mark_box[]">
<input type="checkbox" id="mark_box2" name="mark_box[]">