2013-10-22 37 views
0

我正在嘗試動態追加複選框內的div。得到所有選中的複選框在一個div中的編號​​

我想要一個JavaScript函數來執行以下操作:

  • 當我選中一個複選框:其ID添加到一個數組。
  • 當我取消選中複選框時:從該數組中刪除該ID。

這是我迄今所做的:

var chkArray = []; 
$(".Checked:checked").each(function() { 
    chkArray.push($(this).attr("id")); 
}); 
var selected; 
selected = chkArray.join(',') + ","; 
if (selected.length > 1) { 
    return chkArray; 
} 
+0

請張貼您的HTML – Satpal

+0

您在div或複選框上選擇了「Checked」類嗎?在你的代碼中,你正在從數組中創建一個字符串來檢查數組中是否有任何東西。爲什麼不檢查數組的長度? – Guffa

+0

這是常見的堆棧溢出禮貌,至少回覆試圖幫助你的人。我還注意到,您已經提出了幾個問題,但即使它們看起來有效,也沒有接受任何答案。請記住接受幫助你的答案。 – George

回答

5

我不知道你爲什麼在最後加入陣列 - 所以我沒有將它。但這是一個基本的方法。 $.map()將迭代複選框數組並返回當前元素的id,僅當它被選中時才返回。 $.map()然後存儲在一個新的數組返回值(chkArray):

$checkbox = $('.Checked'); 
function checkArray(){ 
    var chkArray = []; 
    chkArray = $.map($checkbox, function(el){ 
     if(el.checked) { return el.id }; 
    }); 
    console.log(chkArray); 
} 

JSFiddle

+0

我喜歡這個優雅的解決方案。順便說一下,OP的說明 - 檢查/取消選中的東西已經由默認處理,所以您只需要點擊(或更改)複選框時,通過複選框的數組並返回那些被檢查的ID就像那樣簡單。 – Terry

0

而是把你的表格ID和同時提交檢查什麼都複選框選中這樣

$("#formid input:checkbox:checked").each(function() { 
    var chkArray = []; 
    chkArray.push($(this).id()); 
}); 
0

這應該做你所描述的

var checkboxes = $("input[type=checkbox]"); 
var r = []; 

checkboxes.on("change",function(e){ 
    if(!e.target.id){ 
     return; 
    } 
    if(e.target.checked){ 
     r.push(e.target.id); 
    } 
    else{ 
     var index = r.indexOf(e.target.id) 
     if(~index){ 
      r.splice(index, 1); 
     }    
    } 
    console.log(r); 
}); 
0

這是我會怎麼做:

var checkedArray = []; 

$(":checkbox").change(function(){ 
    if((this).checked){ 
    checkedArray.push(this.id); 
    } 
    else{ 
    checkedArray.splice(checkedArray.indexOf(this.id), 1); 
    } 

    //you can call your function here if you need to act on this. 

}); 

Codepen

1

我測試了喬治的jsfiddle並不能得到它的工作,但他編輯的代碼,並使它工作,你可以試試這個作品

$('#PostAlert').click(function GetID() { 

      $checkbox = $('.CheckBxMSG'); 
      var chkArray = []; 
      chkArray = $.map($checkbox, function (el) { 
       if (el.checked) { return el.id }; 
      }); 
      alert(chkArray); 
     }) 
相關問題