2014-01-31 2 views
0

Я новичок в программировании, поэтому не знаю многого, но мне было интересно, есть ли возможность окончательно отключить кнопку. Я использовал это:Можно ли постоянно отключать кнопки html?

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

, но в некоторых частях документа я реверс, что с помощью этого:

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

мне нужно что-то, что может переопределить это, и просто постоянно отключить кнопку. Есть ли способ сделать это?

+2

Это не ваша проблема. Проблема заключается в дизайне. – Will

+0

ОК ... так что мне делать, чтобы исправить это? – CPC

+4

_ "но в некоторых частях документа я отменяю это" _. Так что не делай этого. – j08691

ответ

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; 
    } 
} 
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 все кнопки постоянно отключены.

+0

s/login/logic? Не уверен. – isherwood

+0

Я действительно не понимаю, что вы имеете в виду. – CPC

+0

ButtonX, который отключен, является результатом двух вещей: все кнопки отключены или кнопкаX отключена. Моделируйте эти аспекты отдельно. Не пытайтесь вставить его в свойство отключенного HTML, потому что вы не можете различать эти случаи. – Halcyon

Смежные вопросы