2012-03-29 40 views
0

我在尝试创建检查表单中所有复选框的Javascript函数时遇到问题。Javascript切换检查全部嵌套阵列名称

我的窗体上的复选框的例子看起来像

<b>A:</b> <input type="checkbox" name="multipleForms[201][A]"><br> 
<b>B:</b> <input type="checkbox" name="multipleForms[201][B]"><br> 
<b>C:</b> <input type="checkbox" name="multipleForms[201][C]"><br> 
<b>D:</b> <input type="checkbox" name="multipleForms[201][D]"><br> 

<b>A:</b> <input type="checkbox" name="multipleForms[500][A]"><br> 
<b>B:</b> <input type="checkbox" name="multipleForms[500][B]"><br> 
<b>C:</b> <input type="checkbox" name="multipleForms[500][C]"><br> 

而我想做的是能够通过一个数字,如201和500成一个Javascript功能,并拥有所有复选框与第一数组索引作为该整数进行检查。

因此,checkAll(201)将检查前4个复选框,checkAll(500)将检查其他3个复选框。

我宁愿不改变我的复选框的名称,如果这是可能的,因为弦乐索引对我的PHP代码非常重要。

在此先感谢。

另外,我宁愿有非jQuery代码。

回答

1

这样的事情? :http://jsfiddle.net/RZPNG/6/

var checkboxes = document.getElementsByTagName('input'); 

function check(num) { 
    for (var i = 0; i < checkboxes.length; i++) { 
     if (parseInt(checkboxes[i].name.split('[')[1]) === num) { 
      checkboxes[i].checked = 'checked'; 
     }     
    } 
} 

check(201);​ 
+0

,完美的工作,谢谢! – nine7ySix 2012-03-29 12:20:06

0

类似下面应该做的:

function checkBoxes(form, s) { 
    var input, inputs = form.getElementsByTagName('input'); 
    var re = new RegExp(s); 

    for (var i=0, iLen=inputs.length; i<iLen; i++) { 
    input = inputs[i]; 
    if (input.type == 'checkbox' && re.test(input.name)) { 
     input.checked = true; 
    } else { 
     input.checked = false; 
    } 
    } 
} 

你也可以使用querySelectorAll,但支持并不常见尚未:

function checkBoxes(s) { 
    var els = document.querySelectorAll('input[name*="' + s + '"]'); 

    for (var i=0, iLen=els.length; i<iLen; i++) { 
    els[i].checked = true; 
    } 
}