如果复选框的值在数组中,则如何设置复选框

时间:2017-03-04 19:03:56

标签: javascript jquery

我有输入:

  <div id="my">
   <input type="checkbox" value="1" name="names[]">
   <input type="checkbox" value="2" name="names[]">
   <input type="checkbox" value="3" name="names[]">
   <input type="checkbox" value="4" name="names[]">
  </div>

我的javascript:

initValues=[1,2,3];
$('#my').find(':checkbox[name="names[]"]').each(function () {
  $(this).prop("checked", ($.inArray($(this).val(), initValues)));
});

现在我的所有复选框都已经过检查。如何更改我的代码以设置为ckeckboxes检查哪些值在initValues数组中?

3 个答案:

答案 0 :(得分:2)

$。inArray返回索引,而不是布尔值。另外,parseInt你的值,因为当你拿起它时它被认为是字符串。

initValues=[1,2,3];
            $('#my').find(':checkbox[name="names[]"]').each(function () {
              $(this).prop("checked", $.inArray(parseInt($(this).val()), initValues) == -1 ? false : true );
            });

答案 1 :(得分:1)

&#13;
&#13;
let initValues = [1, 2, 3];
$('#my').find(':checkbox[name="names[]"]').each(function() {
  if (initValues.some(v => v == $(this).val())) {
    $(this).prop('checked', true);
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my">
  <input type="checkbox" value="1" name="names[]">
  <input type="checkbox" value="2" name="names[]">
  <input type="checkbox" value="3" name="names[]">
  <input type="checkbox" value="4" name="names[]">
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您需要将值重新转换为数字,以便与数组值进行比较。

$.inArray(+$(this).val(), initValues))

修订示例:

&#13;
&#13;
initValues=[1,2,3];
         $('#my').find(':checkbox[name="names[]"]').each(function () {
   $(this).prop("checked", ($.inArray(+$(this).val(), initValues)) != -1);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
   <div id="my">
   <input type="checkbox" value="1" name="names[]">
   <input type="checkbox" value="2" name="names[]">
   <input type="checkbox" value="3" name="names[]">
   <input type="checkbox" value="4" name="names[]">
  </div>
&#13;
&#13;
&#13;