.setAttribute("禁用", false); 将可编辑属性更改为 false

IT技术 javascript firefox firefox-addon xul
2021-02-19 07:42:01

我想要与单选按钮相关的文本框。因此,每个单选按钮都应该启用它的文本框并禁用其他的。但是,当我将 textbox 的 disabled 属性设置为 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个回答

disabled元件是,(自我解释)禁用,从而在逻辑上不可编辑的,这样:

设置禁用属性 [...] 也会更改可编辑属性

是一种预期的和明确定义的行为。

这里真正的问题似乎是您试图设置disabledfalsevia setAttribute(),但它没有达到您的预期。如果一个元素被禁用disabled-attribute设置,独立的ITvalue的(所以disabled="true"disabled="disabled"并且disabled="false"都做同样的:该元素获得禁用)。你应该删除完整的属性:

element.removeAttribute("disabled");

或直接设置该属性:

element.disabled = false;
很好的答案,但在后一种情况下,您说“直接设置该属性”,我认为应该是“直接设置该属性”,因为您正在编辑 DOM 属性而不是 HTML 属性。细微的差异,但我认为在这里很重要。
2021-04-21 07:42:01
有什么方法可以setAttribute()用来做完全相同的事情吗?setAttribute("disabled","true");不起作用;
2021-04-28 07:42:01

直接设置属性即可: .

eleman.disabled = false;
@AjayAradhya-查看已接受的答案。禁用属性是布尔值,它的存在它的值设置为true。解决此问题的唯一方法是将该属性设置为 false 或使用removeAttribute删除该属性
2021-04-18 07:42:01
有什么办法可以使用 setAttribute() 来做完全相同的事情吗?setAttribute("禁用","true"); 不起作用
2021-05-17 07:42:01

使用方法设置删除 属性

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>

尝试这样做:

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

要启用元素,您必须删除 disabled 属性。将它设置为 false 仍然意味着它被禁用。

http://jsfiddle.net/SRK2c/

实际上不考虑禁用的属性值..通常如果您注意到该属性设置为禁用=“禁用”,则不必说这里的“禁用”..因此最好的办法是删除该属性。

element.removeAttribute("disabled");     

你也可以做

element.disabled=false;