2013-02-20 51 views
-2

所以我有这样的一个形式里面如何使用JavaScript处理大型html复选框?

<input type="checkbox" name="arr" value="A" />A 
<input type="checkbox" name="arr" value="B" />B 
<input type="checkbox" name="arr" value="C" />C 
<input type="checkbox" name="arr" value="D" />D 
<input type="checkbox" name="arr" value="E" />E 
... 
<more checkboxes here> 
... 

在我的JavaScript我想创建一个由被选中的复选框的值的数组。所以如果B和D被检查,它应该是[B, D]

感谢

编辑:我坏不包括jQuery的标签,但谁删除了他的答案的人给我使用jQuery一个很好的和短的工作方案:

var valueArray = $('input[type="checkbox"][name="arr"]:checked').map(function() { 
    return this.value; 
}).get(); 
+0

[用于声明】(https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Statements?redirectlocale=en-US&redirectslug=Core_JavaScript_1.5_Guide%2FStatements#for_Statement)和[Array.push()](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/push)应该是有帮助的... – Teemu 2013-02-20 16:00:50

回答

1

根据你使用它,它可能只是使用name="arr[]"。提交表单时,服务器端会自动将选中的复选框值转换为数组。但是,如果您试图单纯地在客户端JavaScript中获取该数组,则会涉及更多一点。试试这个:

function getCheckedBoxes(name) { 
    if(document.querySelectorAll) { 
     var qsa = document.querySelectorAll("input[type=checkbox][name='"+name+"']"), 
      l = qsa.length, i, out = []; 
     for(i=0; i<l; i++) if(qsa[i].checked) out.push(qsa[i].value); 
    } 
    else { 
     var qsa = document.getElementsByTagName('input'), l = qsa.length, i, out = []; 
     for(i=0; i<l; i++) { 
      if(qsa[i].type == 'checkbox' && qsa[i].name == name && qsa[i].checked) 
       out.push(qsa[i].value); 
     } 
    } 
    return out; 
}; 
0

你可以使用jQuery像这个:

$("input[type=checkbox][name=arr][checked]").each( 
    function() { 
     // collect the values 
    } 
); 
+0

你是否看到任何地方的jQuery标签? – 2013-02-20 16:06:46

+0

他没有提到他不愿意使用jQuery或任何其他类型的框架! – 2013-02-20 16:12:16

+0

所以你只是假定他会的。多么侮辱。 – 2013-02-20 16:39:36