2012-04-07 88 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

相关问题