我找不到如何使用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()
DOM元素的.disabled 属性是一个布尔值,应该分配布尔值.
的disabledHTML属性,如在标记或setAttribute(),是"布尔HTML属性",这意味着它可以取值为空,disabled或者被省略.另请参阅HTML - 为什么布尔属性没有布尔值?和已禁用属性的正确值.