如何解决readonly =“ true”和readonly =“ readonly”有什么区别?
| 之间有什么区别?<input name=\"TextBox1\" type=\"text\" id=\"TextBox1\" readonly=\"true\" />
和:
<input name=\"TextBox1\" type=\"text\" id=\"TextBox1\" readonly=\"readonly\" />
当我将readonly
设置为true
时,它的工作原理与works4ѭ有所不同。 W3C标准规定,“ 2”应为“ 6”,而不是“ 7”。为什么大多数浏览器都允许使用功能与ѭ4有所不同的readonly=\'true\'
?
解决方法
给元素赋予属性“ 2”将使该元素具有只读状态。紧随其后的是什么值,或者紧随其后的是什么,它仍然将其视为只读。放
readonly=\"false\"
不起作用。
建议使用W3C标准,即readonly=\"readonly\"
。
, 这是属性设置,而不是有价值的属性
这些属性设置是每次查看的值,不需要对其进行任何分配。存在它们时,元素的布尔属性设置为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:
元素上的布尔属性的存在表示真实值,而该属性的缺失表示错误值。
如果存在该属性,则它的值必须是空字符串,或者是该属性的规范名称的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\" />
该属性的缺失是false的唯一有效语法:
<input type=\"text\"/>
建议
如果您关心编写有效的XHTML,请使用readonly=\"readonly\"
,因为<input readonly>
无效,并且其他替代方法不太可读。否则,请使用<input readonly>
,因为它更短。
, readonly=\"readonly\"
是xhtml语法。在xhtml中,布尔属性是用这种方式编写的。在xhtml中,不允许使用'attribute minimization \'(<input type=\"checkbox\" checked>
),因此这是在xhtml中包含布尔属性的有效方法。有关更多信息,请参见此页面。
如果您的文档类型是xhtml过渡文档或严格文档,并且您想对其进行验证,请使用readonly=\"readonly
,否则使用readonly
就足够了。
, 我不确定它们在功能上有何不同。我当前的OS X浏览器批次没有任何区别。
由于传统的HTML属性处理,我认为它们在功能上都是相同的。回想一下,任何标记(布尔)属性仅需存在,但不带值,例如
<input readonly>
<option selected>
XHTML出现时,此语法无效,并且需要使用值。虽然W3使用属性名称作为值来指定,但我猜想大多数浏览器供应商都决定只检查属性是否存在。
, 根据HTML标准,使用
<input name=\"TextBox1\" type=\"text\" id=\"TextBox1\" readonly/>
足以使输入元素变为只读。但是,XHTML标准指出由于attribute minimization
,上面列出的用法无效。您可以参考以下链接:
https://www.w3.org/TR/xhtml1/diffs.html#h-4.5
http://www.w3schools.com/tags/att_input_readonly.asp
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。