2012-04-07 85 views
1

我在我的HTML表單中有11個複選框,並且已經在我的onclick函數中有一個部分來確定它們中有多少個已被選中,但我希望能夠確定哪些複選框已被選中,並且可能只需添加任何複選框通過ID /值進行了檢查到一個ArrayList等如何確定在HTML表單中選中哪個複選框?

編輯:(?固定代碼..)

var formobj = document.forms[0]; 
    var ingNum = 0; 
    checked = []; 
    for (var j = 0; j < formobj.elements.length; j++) { 
     if (formobj.elements[j].type == "checkbox" && formobj.elements[j].checked) { 
       ingNum++; 
       checked.push(formobj.elements[j].value); 
     } 
    } 

回答

3

如果你要轉換的完全符合他們的value屬性的數組(如果id屬性,交換valueid),您可以使用...

var inputs = document.getElementById('your-form').getElementsByTagName('input'), 
    checked = []; 

for (var i = 0, length = inputs.length; i < length; i++) { 
    if (inputs[i].type == 'checkbox' && inputs[i].checked) { 
     checked.push(inputs[i].value); 
    } 
} 

那會在任何工作您可能關心的較老的IE。

如果你有隻支持新瀏覽器的奢侈品,你可以使用...

var checked = [].slice.call(document 
       .querySelectorAll('#your-form input[type="checkbox"]')) 
       .filter(function(checkbox) { 
         return checkbox.checked; 
       }) 
       .map(function(checkbox) { 
         return checkbox.value; 
       }); 

如果您正在使用一個庫如jQuery,這是更簡單...

var checked = $('#your-form :checkbox:checked') 
       .map(function() { 
         return this.value; 
       }) 
       .get(); 
+0

更新的代碼。這看起來正確嗎? – Wilson 2012-04-07 02:50:33

+0

@JesusSqueegee它應該工作。 – alex 2012-04-07 02:54:56

0
var checkedBoxes = []; 

$("input:checked").each(function() { 
    checkedBoxes.push($(this)); 
}); 

其實,我覺得你可能只是這樣做:

var checkedBoxes = $("input:checked"); 

但我不是100%確定這是否有效。

+1

我在這個問題上看不到jQuery標記... – 2012-04-07 02:42:21

+0

好點,對不起。儘管如此,它最終可能對某些人有用。 :) – 2012-04-07 02:43:16

相關問題