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" 无效HTML5readonly="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上面列出的用法是无效的。 你可以参考下面的链接:

https://www.w3.org/TR/xhtml1/diffs.html#h-4.5

http://www.w3schools.com/tags/att_input_readonly.asp