使用javascript禁用按钮

时间:2013-08-02 17:12:30

标签: javascript

我有四个按钮,其中button2为id。

  

的document.getElementById( 'BUTTON2')禁用=真;

使用上面的代码,只禁用一个按钮。我想要禁用所有按钮。
任何想法 谢谢。

2 个答案:

答案 0 :(得分:9)

  

我有四个按钮,其中button2为id。

不要这样做,it's invalidid必须在文档中是唯一的。

相反,也许给他们相同的class

<input type="button" class="button2">
<input type="button" class="button2">
<input type="button" class="button2">
<input type="button" class="button2">

然后在modern browsers上你可以这样做:

var list = document.querySelectorAll(".button2");
var index;
for (index = 0; index < list.length; ++index) {
    list[index].disabled = true;
}

适用于当前版本,几乎所有内容。它不适用于IE7及更早版本。如果你需要支持这些,我建议使用一个像样的DOM操作库(如jQueryYUIClosureany of several others),它们可以看到按类别划分元素。


或者,你可以给他们相同的name并使用旧的getElementsByName,即使是IE6和IE7也是如此:

<input type="button" name="button2">
<input type="button" name="button2">
<input type="button" name="button2">
<input type="button" name="button2">

那么循环很多:

var list = document.getElementsByName("button2");
var index;
for (index = 0; index < list.length; ++index) {
    list[index].disabled = true;
}

但是有一些注意事项要使用name

  1. 如果这是form,虽然在这种情况下执行此操作会很好,因为这些是按钮,但您可能不想使用{{1}在一般情况下为此。例如,如果对多个文本字段或选择框使用相同的name,则必须确保在收到重复的字段名称时在服务器端处理该权限。

  2. 同样,虽然这个用途很好,name只是表单字段的有效属性,而不是其他类型的元素。所以再次对按钮没问题,你不想一概而论。

  3. 小心不要在同一页面上使用name作为"button2",因为IE8及更早版本中有一个错误会使其表现得像{{1} }} id即使它没有。与name相关的here就是一样的错误。

  4. 所以一般来说,"button2"可能是更好的方法。

答案 1 :(得分:0)

单个页面上只应出现1个id值。为每个按钮使用不同的id值(例如,对于一个按钮使用id =“button1”,对于另一个按钮使用id =“button2”。

然后您可以一次禁用每个按钮:

document.getElementById('button1').disabled=true;
document.getElementById('button2').disabled=true;