2013-03-26 19 views
3

我創造我radioGroup中一個元素是這樣的:如何動態禁用單選按鈕組

var selectorLay1 = document.createElement('input'); 
     var selectorLay1Atributes = { 
      'type': 'radio', 
      'class': "selectorLay1", 
      'id': "radioLay1", 
      'name': "layouts", 
      'onchange': "mv.createLayout(1,1)"}; 

我有這樣不同的元素。但它們都具有相同的名稱:'layouts'。 如何找到所有這些元素並動態禁用它們。

+0

你認識到這將(當然*似乎*)創建具有相同'id'多個元素? – 2013-03-26 12:56:16

+0

只有name屬性是相同的 – Jacob 2013-03-26 13:08:43

回答

5

我建議:

var inputs = document.getElementsByName('layouts'); 
for (var i = 0, len = inputs.length; i<len; i++){ 
    inputs[i].disabled = true; 
} 

Simple demo

這將選擇的layoutsname的相關要素,然後,在for {...}循環,遍歷這些元素並設置disabled屬性。

使用一個簡單的函數方法:

function disableByName(elName){ 
    var els = document.getElementsByName(elName); 
    if (els !== null){ 
     for (var i = 0, len = els.length; i<len; i++){ 
      els[i].disabled = true; 
     } 
    } 
} 

var button = document.getElementById('radioDisable'); 

button.addEventListener('click',function(e){ 
    e.preventDefault(); 
    disableByName('layouts'); 
}, false); 

Simple demo

或者,如果你願意,你可以擴展對象原型,讓您直接禁用由document.getElementsByName()選擇返回這些元素:

Object.prototype.disable = function(){ 
    var that = this; 
    for (var i = 0, len = that.length; i<len; i++){ 
     that[i].disabled = true; 
    } 
    return that; 
}; 

document.getElementsByName('layouts').disable(); 

Simple demo