【问题标题】:jquery multiple checkboxes arrayjquery 多个复选框数组
【发布时间】:2011-09-04 05:41:39
【问题描述】:
<input type="checkbox" name="options[]" value="1" />
<input type="checkbox" name="options[]" value="2" />
<input type="checkbox" name="options[]" value="3" />
<input type="checkbox" name="options[]" value="4" />
<input type="checkbox" name="options[]" value="5" />

如何创建一个包含选中复选框值的数组?

注意:(重要)我需要一个像 [1, 2, 3, 4, 5] 而不是像 ["1", "2", "3", "4", "5"] 的数组。
注意:大约有 50 个复选框。

有人可以帮助我吗?请!

谢谢!

【问题讨论】:

标签: jquery arrays checkbox


【解决方案1】:
var checked = []
$("input[name='options[]']:checked").each(function ()
{
    checked.push(parseInt($(this).val()));
});

【讨论】:

    【解决方案2】:

    您可以使用$.map()(甚至是对jQuery 对象进行操作的.map() 函数)来获取一组检查值。一元 (+) 运算符会将字符串转换为数字

    var arr = $.map($('input:checkbox:checked'), function(e,i) {
        return +e.value;
    });
    
    console.log(arr);
    

    这里是an example

    【讨论】:

    • 感谢分享!您知道如何将检查值添加到输入而不是跨度吗?我试过$('#test').val(arr.join(','));
    • 您可以进一步缩短它,例如var arr = $.map($('input:checkbox:checked'), (e) =&gt; +e.value);
    【解决方案3】:
    var checkedString = $('input:checkbox:checked.name').map(function() { return this.value; }).get().join();
    

    【讨论】:

      【解决方案4】:

      如果你的每个输入框都有一个类,那么你可以这样做

              var checked = []
              $('input.Booking').each(function ()
              {
                  checked.push($(this).val());
              });
      

      【讨论】:

        【解决方案5】:

        当您选中或取消选中任何名为options[] 的复选框时,这种方式将允许您添加或删除值:

        var checkedValues = [];
        $("input[name='options[]']").change(function() {
            const intValue = parseInt($(this).val());
            if ($(this).is(':checked')) {
                checkedValues.push(value);
            } else {
                const index = checkedValues.indexOf(value);
                if (index > -1) {
                   checkedValues.splice(index, 1);
                }
            }
         });
        

        【讨论】:

          【解决方案6】:

          一个可以重用的全局函数:

          function getCheckedGroupBoxes(groupName) {
          
              var checkedAry= [];
              $.each($("input[name='" + groupName + "']:checked"), function () {
                  checkedAry.push($(this).attr("id"));
              });
          
               return checkedAry;
          
          }
          

          其中 groupName 是复选框组的名称,例如:'options[]'

          【讨论】:

            【解决方案7】:

            纯 javascript 答案

            const checked = Array.from(
                document.querySelectorAll(`input[name=myCheckboxGroup]:checked`)).map(node=>node.value);
            

            【讨论】:

              猜你喜欢
              • 2014-07-05
              • 2013-03-27
              • 2012-01-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-02-28
              • 2010-11-10
              • 2017-05-09
              相关资源
              最近更新 更多