.setAttribute ("disabled", false); cambia el atributo editable a false


Quiero tener cuadros de texto relacionados con los botones de radio. Por lo tanto, cada botón de opción debe habilitar su cuadro de texto y deshabilitar los demás. Sin embargo, cuando establezco el atributo deshabilitado de textbox en verdadero, también cambia el atributo editable. Intenté establecer el atributo editable true de nuevo, pero no funcionó.

Esto fue lo que intenté:

Función JS:

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

Elementos XUL:

<radio id="pno" label="123" onclick="enable('ad')" />
<textbox id="ad" editable="true"  disabled="true" flex="1" emptytext="asd" onkeypress="asd(event)" tooltiptext="" >
Author: Shawn Chin, 2011-09-23

6 answers

Un elemento disabled es, (auto-explicativo) deshabilitado y por lo tanto lógicamente no editable. así:

Establece el atributo disabled [...] también cambia el atributo editable

Se pretende un comportamiento bien definido.

El verdadero problema aquí parece ser que estás tratando de establecer disabled a false a través de setAttribute() que no hace lo que esperas. un elemento se deshabilita si el atributo disabled se establece, independientemente de su valor (así, disabled="true", disabled="disabled" y disabled="false" todos hacen el lo mismo: el elemento se deshabilita). en su lugar, debe eliminar el atributo completo:

element.removeAttribute("disabled");

O establezca esa propiedad directamente:

element.disabled = false;
 80
Author: oezi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 13:42:00

Simplemente establezca la propiedad directamente:.

eleman.disabled = false;
 9
Author: RobG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-23 09:08:43

Intenta hacer esto en su lugar:

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

Para habilitar un elemento debe eliminar el atributo disabled. Configurarlo a false todavía significa que está deshabilitado.

Http://jsfiddle.net/SRK2c /

 6
Author: Richard Dalton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-23 09:06:06

El valor de los atributos deshabilitados no se considera actally.. por lo general, si usted ha notado que el atributo se establece como disabled="disabled" el "disabled" aquí no es necesario persay.. por lo tanto, lo mejor que puede hacer es eliminar el atributo.

element.removeAttribute("disabled");     

También podrías hacer

element.disabled=false;
 4
Author: Baz1nga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-23 09:08:20

Usando el método establecer y eliminar atributo

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>
 3
Author: antelove,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-20 07:53:11

Simplemente reemplace 'myselect' con su id

Para desactivar - >

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

Para habilitar - >

document.getElementById("mySelect").disabled = false; 
 0
Author: Tom Fuller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-17 10:21:49