【问题标题】:Mutidimensional Array Of Checkboxes? [duplicate]复选框的多维数组? [复制]
【发布时间】:2012-11-12 12:53:23
【问题描述】:

可能重复:
fetching checkbox multidimensional array in javascript

是否可以实现一个多维的复选框数组?

例如

     <input type='checkbox' name='question[0][]' value='0'>
     <input type='checkbox' name='question[0][]' value='1'>
     <input type='checkbox' name='question[0][]' value='2'>

     <input type='checkbox' name='question[1][]' value='0'>
     <input type='checkbox' name='question[1][]' value='1'>
     <input type='checkbox' name='question[1][]' value='2'>

     <input type='checkbox' name='question[2][]' value='0'>
     <input type='checkbox' name='question[2][]' value='1'>
     <input type='checkbox' name='question[2][]' value='2'>

如果可能的话,您将如何在 javascript 中确定复选框是否被选中?

【问题讨论】:

  • 是的,这些复选框的值将在接收端(服务器端)显示为多维数组。不,这些复选框不会在 Javascript 中变成多维的。您必须单独访问每个复选框并确定它是否被选中。
  • document.getElementById("questionForm").elements['question[][]'][i][j].checked 这行得通吗?
  • 不,这行不通。复选框名称属性中的[] 就是它的名称。它不会转换为 DOM 中的数组。
  • 但是请注意,PHP 对以大括号结尾的参数名称具有特殊功能/支持。当访问$_POST['question'] 时,PHP 将“自动”将它们转换为单个数组。 JavaScript 和 JSP 等其他服务器端语言不这样做。如何在 JSP/Servlet 中访问它在 stackoverflow.com/a/13087174stackoverflow.com/a/4902050 中进行了演示
  • @CarlSaldanha 看到我的更新。我添加了一个替代的“更高级”选项^_^

标签: javascript html forms


【解决方案1】:

可以选择一个特定的复选框。

您可以在名称属性上选择question[x][],然后遍历它们以获取它们的每个检查值。

一个使用 jQuery 的例子:

var checkedBoxes = {0: [], 1: [], 2: []};
$("input[name='question[0][]']").each(function(){
    checkedBoxes[0].push(this.checked);
});
//then do the same for 1 and 2

//after everything:
console.log(checkedBoxes); //a multidimesional array of checked boxes

或者让它更更高级

var checkedBoxes = {0: [], 1: [], 2: []};
for(index in checkedBoxes) {
    $("input[name='question[" + index + "][]']").each(function(){
        checkedBoxes[index].push(this.checked);
    });
}
//after everything:
console.log(checkedBoxes); //a multidimesional array of checked boxes

小提琴:http://jsfiddle.net/maniator/XA8XV/

【讨论】:

  • jQuery,蹩脚的。为什么不通过document.querySelectorAll
  • @hakre 我不太擅长vanilla js,但这很可能是这样做的方法^_^(但它可能不适用于所有浏览器......)
猜你喜欢
  • 2014-05-29
  • 2015-05-04
  • 2012-09-11
  • 2015-08-24
  • 1970-01-01
  • 2016-11-22
  • 2012-03-17
  • 2014-11-03
  • 1970-01-01
相关资源
最近更新 更多