2015-12-15 63 views
0

我有一种情况,一个长的复选框选项列表是过滤进出用PHP/AJAX查询。因此,当用户检查一个或多个复选框时,需要创建用户已检查哪些框的列表。创建和存储/添加到过滤从复选框值的数组

使用jQuery和.map(),我能创造什么复选框被选中的初始列表阵列。很简单。

var selected_checkboxes; 

$(document).on('click', '.checkbox_select', function() { 
    var checkbox_selector = $('.checkbox_select:checked'); 

    selected_checkboxes = checkbox_selector.map(function(i, n) { 
     return this.value; 
    }).get(); 

    console.log(selected_checkboxes); 
}); 

所以在这里,我们会说我有一组10个复选框(复选框1 - 10),我检查的第一个3

控制台输出["Checkbox 1", "Checkbox 2", "Checkbox 3"]

问题当您过滤复选框的视图时会出现。说你过滤器出除复选框3,5和6以外的所有复选框。复选框3仍然被选中。现在,如果我们选中“复选框5”,我们的新列表阵列将如下所示:["Checkbox 3", "Checkbox 5"]

我知道它为什么会这样做,但所需的结果是建立在运行过滤器之前检查的内容之后,它应该看起来像["Checkbox 1", "Checkbox 2", "Checkbox 3", "Checkbox 5"]。几乎就像你刚刚添加到最初的数组值。

过滤不能隐藏/显示被隐藏,因为它是所有的基于AJAX的查询时,复选框。

有没有人有任何想法,我可以得到一个数组像这样工作?任何帮助将非常感激。

回答

1

你可以做

var selected_checkboxes = []; 
    $("input:[type = 'checkbox']").click(function(event) { 
    if ($(this).attr("checked")) { 
     selected_checkboxes.push($(this)); 
    }else{ 
     var index = selected_checkboxes.indexOf($(this)); 
     if (index != -1) { 
      selected_checkboxes = selected_checkboxes.slice(index, 1); 
     } 
    } 
}); 
for(var i = 0; i< selected_checkboxes.length;i++){ 
    console.log(selected_checkboxes[i].val()); 
} 

请试试吧!

0

这里chekedid是你的输入类型复选框类名

function selectedMychecbox() { 
    checkedid = Array(); 
    $('.checkedid:checked').each(function() { 
     checkedid.push($(this).val()); 
    }); 


} 
相关问题