readonly =“true”和readonly =“readonly”有什么区别?
有什么区别:
<input name="TextBox1" type="text" id="TextBox1" readonly="true" />
和:
<input name="TextBox1" type="text" id="TextBox1" readonly="readonly" />
当我将readonly
设置为true
它与readonly='readonly'
有些不同。 W3C标准认为, readonly
应该是'readonly'
而不是'true'
。 为什么大多数浏览器只允许readonly='true'
,它的function与readonly='readonly'
有些不同?
赋予一个元素readonly
属性将给这个元素的只读状态。 不pipe你在后面放了什么值,或者如果你在后面放了任何值,它仍然会看作是只读的。 把readonly="false"
将不起作用。
build议使用W3C标准。
这是一个属性设置,而不是一个有价值的属性
这些属性设置是每个查看的值,不需要对它们进行任何分配。 当它们出现时,一个元素的布尔属性设置为true
,当它们不存在时,它们是false
。
<input type="text" readonly />
实际上,浏览器对他们的价值分配是自由的。 如果你给它们赋值,它将被忽略。 浏览器只会看到特定属性的存在,并忽略您要分配给它们的值。
这当然是好的,因为有些框架没有能力添加这些属性,而没有提供它们的价值。 Asp.net MVC的Html帮手是其中之一。 jQuery过去是一样的,直到1.6版本,他们添加了属性的概念。
当然也有一些与XHTML相关的含义,因为XML中的属性需要值才能形成。 但这是一个不同的故事。 因此,浏览器必须忽略值赋值。
无论如何。 不要紧 ,只要名称拼写正确,就可以被浏览器检测到。 但是为了可读性和可维护性,最好为它们分配有意义的值,比如:
readonly="true" <-- arguably best human readable readonly="readonly"
而不是
readonly="johndoe" readonly="01/01/2000"
这可能会混淆未来的开发人员维护您的代码,并可能会影响未来的规范,可能会定义更严格的规则,这种属性设置。
readonly="true"
无效HTML5 , readonly="readonly"
有效。
HTML5规范 :
http://www.w3.org/TR/html5/forms.html#attr-input-readonly :
readonly属性是一个布尔属性
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :
元素上布尔属性的存在表示真值,缺less属性表示假值。
如果该属性存在,则其值必须是空string,或者是该属性规范名称的ASCII不区分大小写的匹配值,且不包含前导或尾随空格。
结论 :
以下是有效的,等同的和真实的 :
<input type="text" readonly /> <input type="text" readonly="" /> <input type="text" readonly="readonly" /> <input type="text" readonly="ReAdOnLy" />
以下是无效的 :
<input type="text" readonly="0" /> <input type="text" readonly="1" /> <input type="text" readonly="false" /> <input type="text" readonly="true" />
缺less该属性是错误的唯一有效语法:
<input type="text"/>
build议
如果你关心写有效的XHTML,使用readonly="readonly"
,因为<input readonly>
是无效的,其他的select是不太可读的。 否则,只需使用<input readonly>
因为它更短。
readonly="readonly"
是xhtml语法。 在xhtml布尔属性是这样写的。 在xhtml'属性最小化'( <input type="checkbox" checked>
)是不允许的,所以这是在xhtml中包含布尔属性的有效方法。 请参阅此页获取更多信息。
如果您的文档types是xhtml过渡或严格,并且您想validation它,请使用readonly="readonly
否则readonly
。
我不确定他们在function上有什么不同。 我目前的一批OS X浏览器没有显示任何区别。
由于传统的HTML属性处理,我认为它们在function上是相同的。 回到当天,任何标志(布尔)属性只需要存在,无值,例如
<input readonly> <option selected>
当XHTML出现时,这个语法是无效的,值是必需的。 虽然W3使用属性名称作为值指定,我猜大多数浏览器供应商决定只是检查属性的存在。
根据HTML标准,使用
<input name="TextBox1" type="text" id="TextBox1" readonly/>
足以使input元素只读。 但是,XHTML标准认为由于attribute minimization
上面列出的用法是无效的。 你可以参考下面的链接: