javascript中DOM'禁用'属性

Leg*_*ion 3 javascript dom

我找不到如何使用disabled属性来禁用javascript中的表单元素的明确答案.

有些地方说它是一个简单的布尔值.其他人说将其设置为字符串值'禁用'以禁用,将空字符串''设置为启用.或者添加和删除disabled属性,通常与字符串值结合使用.

那么跨浏览器的正确方法是哪种?(没有jQuery).像启用标志这样简单的事情是如何被屠杀的?

- 编辑 -

对不起,我应该提到我正在为IE8开发(不是选择).

I a*_*ica 14

以下输入元素均已禁用:

<input disabled />
<input disabled="" />
<input disabled="disabled" />
<input disabled="true" />
<input disabled="false" /> <!-- still disabled! -->
Run Code Online (Sandbox Code Playgroud)

如果存在布尔属性,则它处于打开状态; 否则,它关闭了.这个价值并不意味着什么.

但是,当通过javascript处理这些元素时,您应该使用相应的属性,即:

myInput.disabled = true; // adds the attribute and disables control
myInput.disabled = false; // removes the attribute and enables control
Run Code Online (Sandbox Code Playgroud)

该属性将为您更新属性.这是所有的布尔属性/属性对真,即:readonly,checked,selected等.

混淆可能源于这样一个事实:setAttribute()要求一个名称和值,并以一种key="value"格式发出标记- 即使你不想要一个值.添加自定义布尔属性时,我只需设置没有值的属性(示例):

input.setAttributeNode(document.createAttribute("data-custom"));
console.log(input); // <input data-custom>
Run Code Online (Sandbox Code Playgroud)

见和.document.createAttribute()Element.setAttributeNode()

  • 特别注意最后一个HTML示例.`<input disabled ="false">`基本上就是你所说的HTML.不要那样做.避免`disabled ="true"`,即使只是为了阻止思考过程"好吧,如果`真'`禁用它......". (2认同)

Ber*_*rgi 6

DOM元素的.disabled 属性是一个布尔值,应该分配布尔值.

disabledHTML属性,如在标记或setAttribute(),是"布尔HTML属性",这意味着它可以取值为空,disabled或者被省略.另请参阅HTML - 为什么布尔属性没有布尔值?已禁用属性的正确值.