在jquery中的数组中是否选中了复选框

时间:2017-11-20 08:50:31

标签: javascript php jquery arrays

<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

请帮我这样做。

6 个答案:

答案 0 :(得分:2)

您使用的方式是正确的,但您获得的值在每个州都保持不变。您必须检查是否选中了复选框。这是代码:

var is_checked = $("input[name='mark_box[]']").map(function(){
       return $(this).attr("checked");
}).get(); 

如果您有任何疑问,请与我们联系。

答案 1 :(得分:1)

输入的graphml属性返回值。您应该使用返回复选框状态的value

checked

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:1)

您需要检查checked而不是value

&#13;
&#13;
$(".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;
&#13;
&#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)

我认为你需要类似下面的内容

&#13;
&#13;
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;
&#13;
&#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[]">