1. ホーム
  2. javascript

[解決済み] .setAttribute("disabled", false); 編集可能な属性をfalseに変更する。

2023-07-02 14:53:51

質問

ラジオボタンに関連したテキストボックスを持ちたい。したがって、各ラジオボタンは、それのテキストボックスを有効にし、他のものを無効にする必要があります。しかし、私はテキストボックスのdisabled属性をtrueに設定すると、それは編集可能な属性も変更されます。再度editable属性を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="" >

どのように解決するのですか?

A disabled 要素は、(自明ですが)無効であり、それによって論理的に編集できないので

disabled属性を設定する [...] と、editable属性も変更されます。

意図された、よく定義された動作のことです。

ここでの本当の問題は、あなたが disabledfalse を経由して setAttribute() である場合、その要素は無効になります。 disabled -属性が設定されている場合、その値とは無関係に無効になります (ですから disabled="true" , disabled="disabled"disabled="false" はすべて同じことをします: 要素は無効になります)。代わりに complete 属性を削除する必要があります。

element.removeAttribute("disabled");

を使うか、そのプロパティを直接設定します。

element.disabled = false;