【发布时间】:2010-04-15 21:58:00
【问题描述】:
我正在使用几页 validation tools 我遇到的一个问题是他们告诉我 textarea 必须具有 rows 和 cols 属性。如果我在 CSS 中设置它或使用 display:none (并使用它来保存原始文本数据)我可以做些什么来跳过吗?每次我使用它时,似乎唯一的答案是 rows="0" cols="0" 。但是我感觉这不是一个好的解决方案。
【问题讨论】:
我正在使用几页 validation tools 我遇到的一个问题是他们告诉我 textarea 必须具有 rows 和 cols 属性。如果我在 CSS 中设置它或使用 display:none (并使用它来保存原始文本数据)我可以做些什么来跳过吗?每次我使用它时,似乎唯一的答案是 rows="0" cols="0" 。但是我感觉这不是一个好的解决方案。
【问题讨论】:
停止使用textarea。如果您想保存原始数据,请使用 <script> 元素(如果您打算使用 JS 访问它)或 input 类型的 hidden (如果您打算将其作为表单数据提交)。
如果您不打算让用户输入数据,请不要使用“让用户输入数据”的语义。
【讨论】:
<script type="text/javascript">var global_data = 'your data'; function func() { var data = global_data; }</script>
usefulname = usefulname || {}; usefulname.id_of_element = { ... };,然后是usefulname[this.id]
我认为,这是标准解决方案。不过,最好给出更大的值,以便禁用 CSS 的浏览器可以正确显示它们。对于不可见的数据持有者,您可以使用<div> 而不是<textarea>。
【讨论】:
大卫的答案最终是正确的。不过,关于必需属性的快速说明:许多属性需要存在,但不需要具有值 - 所以<textarea rows="" cols=""></textarea> 是完全有效的。
在语义上,将此视为显式不指定行或列,这与 <textarea></textarea> 不同,后者只是完全忽略了属性。
【讨论】:
<!ENTITY % Number "CDATA"> <!-- one or more digits -->。所以它仍然是错误的,它只是(我假设)XML DTD 没有足够的表达力来告诉验证器该要求。所以它仍然是一个一致性错误,而不是一个有效性错误。我会将此作为不使用 XHTML 的另一个原因。