javascript - 使用jquery选中复选框时如何制作键值对数组?

标签 javascript jquery arrays checkbox

我有多个复选框,当我选中一个复选框时,将生成两个键值对。
像这样: Object {id: "101", name: "example"}

这将为每个选中的复选框生成,并且我想要多个复选框选中的数组。看起来像这样:

[{id:"id1",name:"name1"},{id:"id2",name:"name2"}]

我做了什么

$('.chkCompare').click(function(event) {
    var value = [],
        projectName = {},
        span = $(this).attr('id'),
        value = $('.chkCompare:checked').map(function() {
            $('#span' + span).text('ADDED').css({
                "color": "green"
            });
            projectName['id'] = $(this).attr('id');
            projectName['name'] = $(this).attr('title');
            return value.push(projectName);
        }).get();
});

当我取消选中复选框时,它们将从数组中删除,并希望阻止检查最多 3 个复选框 if >3 然后显示警报框。

最佳答案

您可以检查 :checked 复选框的 length 属性。根据您的情况和使用event.preventDefault()取消默认操作。

$('.chkCompare').click(function(event) {
  var checkedElemets = $('.chkCompare:checked');
  if (checkedElemets.length > 3) {
    event.preventDefault();
    alert('Only 3 checkbox can be checked');
  }

  var values = checkedElemets.map(function() {
    return {
      id: this.id,
      name: this.title
    };
  }).get();

  console.log(values)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" class="chkCompare" title='t1' id='i1' />
<input type="checkbox" class="chkCompare" title='t2' id='i2'/>
<input type="checkbox" class="chkCompare" title='t3' id='i3'/>
<input type="checkbox" class="chkCompare" title='t4' id='i4'/>
<input type="checkbox" class="chkCompare" title='t5' id='i5'/>

关于javascript - 使用jquery选中复选框时如何制作键值对数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37938715/

相关文章:

c++ - 如何在 C++ 中按字母顺序对堆栈进行排序?

javascript - 为什么我只得到最后附加的数据 - 使用 canvasjs

javascript - 在 React JS 中使用 axios 发送变量

javascript - js如何循环发送多个请求

javascript - HTML5,Knockout url 重定向功能

javascript - 使用 jQuery 修复无效的嵌套列表

jQuery:使用remove();对于 <tr> 行

Jquery UI 对话框 - 打开 IE7 浏览器时立即移动到页面底部

Java:用空值反序列化一个json数组

javascript - 二维数组随机生成器 jQuery