2012-03-29 51 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; 
    } 
}