.setAttribute («отключено», false);изменяет редактируемый атрибут на false - PullRequest
47 голосов
/ 23 сентября 2011

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

Вот что я попробовал:

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 ]

101 голосов
/ 23 сентября 2011
Элемент

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

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

Преднамеренное и четко определенное поведение.

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

element.removeAttribute("disabled");

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

element.disabled = false;
10 голосов
/ 23 сентября 2011

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

eleman.disabled = false;
7 голосов
/ 23 сентября 2011

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

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

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

http://jsfiddle.net/SRK2c/

4 голосов
/ 20 декабря 2017

Используя метод установить и удалить атрибут

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>
4 голосов
/ 23 сентября 2011

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

element.removeAttribute("disabled");     

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

element.disabled=false;
0 голосов
/ 17 апреля 2017

просто замените 'myselect' на свой идентификатор

, чтобы отключить ->

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

, чтобы включить ->

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