2015-12-15 67 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()); 
    }); 


} 
相關問題