.setAttribute ("disabled", false); изменяет редактируемый атрибут на false

Я хочу иметь текстовые поля, связанные с radiobuttons. Поэтому каждый переключатель должен включать его текстовое поле и отключать другие. Однако, когда я устанавливаю отключенный атрибут textbox в true, он также изменяет редактируемый атрибут. Я попытался снова установить редактируемый атрибут true, но это не сработало.

Это было то, что я пробовал:

функция JS:

function enable(id)
{
    var eleman = document.getElementById(id);
    eleman.setAttribute("disabled", false);
    eleman.setAttribute("editable", true);
}

элементы XUL:

<radio id="pno" label="123" onclick="enable('ad')" />
<textbox id="ad" editable="true"  disabled="true" flex="1" emptytext="asd" onkeypress="asd(event)" tooltiptext="" >

6 ответов


a disabled элемент, (самоописание) отключен и, следовательно, логически не редактируется. Итак:

установите атрибут disabled [...] изменяет редактируемый атрибут тоже

предназначен для четко определенного поведения.

реальная проблема здесь, кажется, вы пытаетесь установить disabled to false via setAttribute() который не делает то, что вы ожидаете. элемент отключен, если disabled - атрибут установлен, независимо от его значения (Итак,disabled="true", disabled="disabled" и disabled="false" все делают то же самое: элемент отключается). вместо этого вы должны удалить полное атрибутов:

element.removeAttribute("disabled");

или установите это свойство напрямую:

element.disabled = false;

просто установите свойство напрямую: .

eleman.disabled = false;

попробуйте сделать это вместо этого:

function enable(id)
{
    var eleman = document.getElementById(id);
    eleman.removeAttribute("disabled");        
}

чтобы включить элемент, необходимо удалить атрибут disabled. Установка значения false по-прежнему означает, что он отключен.

http://jsfiddle.net/SRK2c/


значение отключенных атрибутов не учитывается.. обычно, если вы заметили, что атрибут установлен как disabled= "disabled"," disabled " здесь не требуется persay.. таким образом, лучше всего удалить атрибут.

element.removeAttribute("disabled");     

также вы могли бы сделать

element.disabled=false;

методом set и удалить атрибут

function radioButton(o) {

  var text = document.querySelector("textarea");

  if (o.value == "on") {
    text.removeAttribute("disabled", "");
    text.setAttribute("enabled", "");
  } else {
    text.removeAttribute("enabled", "");
    text.setAttribute("disabled", "");
  }
  
}
<input type="radio" name="radioButton" value="on" onclick = "radioButton(this)" />Enable
<input type="radio" name="radioButton" value="off" onclick = "radioButton(this)" />Disabled<hr/>

<textarea disabled ></textarea>

просто замените "myselect" на свой id

отключить->

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

включить->

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