2013-03-26 15 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