是否可以永久禁用html按钮?

时间:2014-01-31 16:19:59

标签: javascript html5 button

我是编程的新手,所以我不太了解,但我想知道是否有永久禁用按钮的方法。我用过这个:

document.getElementById("WhateverTheIdIs").disabled = true;

但是在文档的某些部分我反过来说:

document.getElementById("WhateverTheIdIs").disabled = false;

我需要能够覆盖它的东西,并且只是永久禁用按钮。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

你试图将过多的逻辑推入DOM中。这是非常糟糕的做法。确保您的数据模型与您正在建模的数据模型匹配。有一个布尔值:all_buttons_are_disabled然后一个布尔button_X_is_disabled然后执行类似的操作:

function updateButtonX() {
    document.getElementById("WhateverTheIdIs").disabled =
      all_buttons_are_disabled || button_X_is_disabled;
}

http://jsfiddle.net/3n3w3/

toggleX将停用/启用buttonX,但当您按disable all时,所有按钮都会被永久禁用。

答案 1 :(得分:1)

只有一种方法可以禁用或启用按钮。因此,如果您正在寻找一种永久禁用按钮(但保持可见状态)的单独方式,它会将设置.disabled覆盖为true - 按钮没有此类属性或功能。

修复代码的方法有很多种。例如,当您要永久禁用按钮时,可以在按钮上设置自定义属性,然后在您考虑启用按钮的任何位置,您只需检查该自定义属性,如果已设置,则不要启用该按钮。

您可以考虑的其他选项是隐藏按钮或从DOM中删除按钮。

您可以通过在自己的代码中进行永久禁用来修复代码。如果您不是直接操作.disabled属性,而是切换到使用这些函数,那么您的代码将尊重.permDisabled属性。

function getElem(elem) {
    if (typeof elem === "string") {
        elem = document.getElementById(elem);
    }
    return elem;
}

function disableButtonPermanent(elem) {
    elem = getElem(elem);
    elem.disabled = true;
    elem.permDisabled = true;
}

function disableButton(elem) {
    elem = getElem(elem);
    elem.disabled = true;
}

function enableButton(elem) {
    elem = getElem(elem);
    if (!elem.permDisabled) {
        elem.disabled = false;
    }
}