已选中和未选中复选框值数组

时间:2014-09-13 10:52:16

标签: javascript jquery html arrays checkbox

我有这个功能,当我选中一个或多个复选框时,该函数会加载已选中复选框的值...但是当我取消选中一个或多个复选框时,该函数会显示一个空数组。

这是功能:

$(document).ready(function () {
   $('input[type="checkbox"]').change(function () {
         var mycheck = new Array();
         if ($(this).is(':checked')) {
            $("#line-checkbox-1:checked").each(function () {
                mycheck.push($(this).val());//aggiungo value del checked
            });
             alert(mycheck)


        } else {
            var itemtoRemove = $(this);
            mycheck.splice($.inArray(itemtoRemove, mycheck), 1); //rimuovo il value del dechecked

            alert(mycheck);


        }

    });

这是复选框的HTML:

    <div class="col-lg-3">
 <input tabindex="17" id="line-checkbox-1" type="checkbox" name="servizi" value="3">

 </div>

2 个答案:

答案 0 :(得分:0)

试试这个简单的脚本,这适合你:

<强> HTML

<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" />

<强> JQUERY

$(document).ready(function () 
{
   $('input[type="checkbox"]').change(function () 
   {
        var arr = $.map($('input:checkbox:checked'), function(e,i) {
            return +e.value;
        });
        alert(arr);
    });
});

答案 1 :(得分:0)

这可能是因为您使用id来引用复选框,因为每次用户更改复选框时都会从头开始创建数组。每次更改复选框时都应该重新检查列表。这意味着你不需要if。(if($(this).is(“:checked”))

$('.checkboxes input[type="checkbox"]').change(function () {
    var mycheck = new Array();

    $(".checkboxes input[type='checkbox']:checked").each(function () {
        if ($(this).is(':checked')) {
            mycheck.push($(this).attr("id") + ": is " + $(this).val()); //aggiungo value del checked
        }
    });
    alert(mycheck);
});
如果我理解你正在尝试做什么,

这是一个fiddle