readonly ="true"和readonly ="readonly"有什么区别?

Ulh*_*ano 65 html

有什么区别:

<input name="TextBox1" type="text" id="TextBox1" readonly="true" />
Run Code Online (Sandbox Code Playgroud)

和:

<input name="TextBox1" type="text" id="TextBox1" readonly="readonly" />
Run Code Online (Sandbox Code Playgroud)

当我设置readonlytrue它的工作原理来自有所不同readonly='readonly'.W3C标准说readonly应该是'readonly'和不是'true'.为什么大多数浏览器允许readonly='true'哪些功能有些不同readonly='readonly'

jer*_*one 65

赋予元素属性readonly将使该元素具有只读状态.无论你在它之后放置什么价值,或者如果你在它之后加上任何值,它仍然会将其视为只读.投入readonly="false"不起作用.

建议使用W3C标准,即readonly="readonly".

  • 把`readonly ="false"`放在不会做预期事情的意义上是行不通的.它将"工作"(有效果),因为它将使元素只读(在当前浏览器中,即使它根据规范无效). (14认同)

Rob*_*nik 56

这是属性设置而不是值属性

这些属性设置是每次看到的值,不需要对它们进行任何分配.当它们存在时,一个元素将此布尔属性设置为true,当它们不存在时它们就是false.

<input type="text" readonly />
Run Code Online (Sandbox Code Playgroud)

实际上,浏览器可以自由地为它们赋值.如果为它们分配任何值,它将被忽略.浏览器只会看到特定属性的存在,并忽略您尝试分配给它们的值.

这当然是好的,因为有些框架无法在不提供它们的价值的情况下添加这些属性.Asp.net MVC Html助手就是其中之一.jQuery曾经是相同版本,直到版本1.6,他们添加了属性的概念.

当然也有一些与XHTML相关的含义,因为XML中的属性需要值以便形成良好.但这是一个不同的故事.因此浏览器必须忽略值赋值.

无论如何.只要名称拼写正确就可以被浏览器检测到,您就不会介意分配给它们的值.但是为了可读性和可维护性,最好为它们分配有意义的值,如:

readonly="true" <-- arguably best human readable
readonly="readonly"
Run Code Online (Sandbox Code Playgroud)

而不是

readonly="johndoe"
readonly="01/01/2000"
Run Code Online (Sandbox Code Playgroud)

这可能会混淆未来的开发人员维护代码,并可能干扰未来的规范,这些规范可能会为此类属性设置定义更严格的规则

  • 只有`readonly`和`readonly ="readonly"`在HTML中有效. (11认同)
  • -1因为*"可以说是最好的选择"*在HTML 4.01和HTML5中都是无效的. (11认同)

Cir*_*四事件 31

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:

元素上存在布尔属性表示真值,缺少属性表示false值.

如果该属性存在,则其值必须是空字符串,或者是属性的规范名称的ASCII不区分大小写匹配的值,没有前导或尾随空格.

结论:

以下是有效,等效和真实的:

<input type="text" readonly />
<input type="text" readonly="" />
<input type="text" readonly="readonly" />
<input type="text" readonly="ReAdOnLy" />
Run Code Online (Sandbox Code Playgroud)

以下是无效的:

<input type="text" readonly="0" />
<input type="text" readonly="1" />
<input type="text" readonly="false" />
<input type="text" readonly="true" />
Run Code Online (Sandbox Code Playgroud)

缺少该属性是false的唯一有效语法:

<input type="text"/>
Run Code Online (Sandbox Code Playgroud)

建议

如果您关心编写有效的XHTML,请使用readonly="readonly",因为它<input readonly>是无效的,而其他替代方案的可读性较差.否则,只需使用<input readonly>它,因为它更短.

  • +1,但请注意,根据[规范](http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3.4.2),HTML 4.01的计数相同. (2认同)

Koo*_*Inc 19

readonly="readonly"xhtml语法.在xhtml中,布尔属性以这种方式编写.在xhtml'属性最小化'(<input type="checkbox" checked>)是不允许的,所以这是在xhtml中包含布尔属性的有效方法.有关更多信息,请参阅此页面.

如果你的文档类型是XHTML过渡或严格,要验证它,使用readonly="readonly,否则readonly就足够了.