2012-11-06 69 views
4

比如我有HTML元素,如如何禁用使用javascript的单选按钮? (不使用任何JS框架)

<input type="radio" name="disableme" id=1> Animal 
<input type="radio" name="disableme" id=2> Mammal 
<input type="radio" name="disableme" id=3> Human 

我试着像,document.formName.disableme.disabled = true;但它没有工作..

我可以用标识做到这一点。但我需要一枪。

请帮助。

+0

你可以用它代替名称标识,也可以在JavaScript变量得到documentgetElementbyName和存储,并使用循环 – Hkachhia

回答

15

我试图像,document.formName.disableme.disabled = TRUE;但它没有奏效..

因为如果你有多个同名的表单控件,你会得到一个HTML Form Controls Collection。因此循环收集:

var radios = document.formName.disableme; 

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

没有必要添加ID。

+0

WAW ..这是我想要的..谢谢你.. 5分钟后会接受你的答案.. :) – Sahal

+0

非常有帮助。这也解决了我的问题。我不知道这些藏品。非常感谢! – Froxx

5
document.getElementById("1").disabled=true; 
document.getElementById("2").disabled=true; 
document.getElementById("3").disabled=true; 
3

首先你的ids应该用双引号给出。 这样的:

<input type="radio" name="disableme" id="1"> Animal 
<input type="radio" name="disableme" id="2"> Mammal 
<input type="radio" name="disableme" id="3"> Human 

和用于禁止使用JavaScript按钮,使用:

document.getElementById("1").disabled=true; 
+2

更重要的是检查它,一个ID不能以数字开头。 – RobG

+0

我不知道这一点,感谢RobG。 –

+1

引号是不必要的,浏览器对数字ID没有问题(HTML 4.01规范有,但限制在HTML5中被解除)。 –

2

你不可能一次完成。

你有三个单独的元素,所以你必须一次禁用它们一个。没有办法使用简单的Javascript来同时禁用所有三个元素。

document.formName.disableme返回一个数组,所以不能在访问元素的属性,但可以通过循环的每个元件上的元件和访问属性:

var radios = document.formName.disableme; 
for (var i = 0; i < radios.length; i++) { 
    radios[i].disabled = true; 
} 

演示:http://jsfiddle.net/Guffa/2uUKw/

+0

检查以上答案 – Sahal

+0

@Sahal:嗯......参考“上面的答案”不起作用,因为答案没有固定的顺序... – Guffa

+0

编辑后我明白了......'你有三个单独的元素,所以你必须一次禁用它们'这是有道理的:) – Sahal

3

尝试此代码

var radio=document.getElementsByName("disableme"); 
    var len=radio.length; 
    for(var i=0;i<len;i++) 
    { 
     radio[i].disabled=true; 
    } 


<input type="radio" name="disableme" id=1> Animal 
<input type="radio" name="disableme" id=2> Mammal 
<input type="radio" name="disableme" disabled="disabled" id=3> Human 
+0

代码不禁用任何东西。 –

+0

@ JukkaK.Korpela好的我已经更新了我的回答 – Hkachhia

2

如果你想只使用name属性来禁用它,那么你可以使用

document.getElementsByName("disableme")[0].disabled = true;

1
function disable() 
{ 
    var rads = document.formname.disableme; 

    for(var i=0; i<rads.length;i++) 
    { 
     document.formname.disableme[i].disabled = true; 
    } 
}   
+0

一些解释会帮助你回答这个问题 – dove

+0

你希望禁止无线电组呼叫这个功能。这个功能获取与无线电组名称相对应的所有无线电元件并逐一禁用 –

相关问题