【问题标题】:Why Use Bracket Notation in HTML5?为什么在 HTML5 中使用括号表示法?
【发布时间】:2013-01-07 02:33:11
【问题描述】:

这是一个“最佳做法”问题。我正在阅读 Code Review StackExchage 网站,我看到了 this thread。在其中,Joseph Silber 建议对具有多个结构相同的表单输入行的表单使用括号表示法并完全避免使用 ID。

在我读过的有关网页设计/开发的书籍中,我从未见过使用过这种策略。在标签标签中使用括号表示法和包装输入元素,以及在表单输入中不使用 id 标签是个好主意吗?也许关于 Javascript/JQuery 的某些东西使这种方法具有优势?

我想直接问约瑟夫这件事,但我在网站上还没有任何声誉,所以我什至无法发表评论。但是,我有兴趣看到整个社区对此的看法,因为到目前为止,搜索“HTML5 括号表示法”和“HTML5 数组表示法”之类的内容对我来说还没有确定的结果。

以下是上述问题的摘要,其中包含从链接问题中借用的一些示例代码:

为什么要使用这个:

<label>Comment:
  <input type="text" name="comment[]" width="50" />
</label>

而不是这个:

<label for="comment-0">Comment: </label>
<input type="text" id="comment-0" name="comment-0" width="50" />

在具有多行相同输入的表单中?

【问题讨论】:

  • 其他语言不清楚,但是在PHP中,这会导致发布的消息看起来像$_POST["comment"][0]$_POST["comment"][1]等,更容易处理。
  • @Passerby 有道理,谢谢!
  • 对于将输入字段包装在标签中,这一直是有效的(并且经常被推荐)。这实际上意味着您可以省略for-attribute,因为它已经暗示了它属于哪个输入字段。
  • 在标签中包装表单控件也提高了可访问性、可用性和 imo 使它们的样式更容易
  • 隐式(标签元素内的表单控件)和显式(标签和表单控件元素是分开的)关联之间存在权衡。隐式可以提高 a11y 和可用性,因为当单击/悬停标签时,焦点会自动传递给表单控件。这进一步提高了可用性,因为它使表单控件的可点击区域更大。

标签: html web-standards


【解决方案1】:

在输入名称的末尾添加[] 会导致某些服务器端表单处理库将数据显示为数组。其他一些表单处理器不需要特殊语法。您的选择在很大程度上取决于您是否希望与前一种兼容,而不是拥有更复杂的名称并且无法通过 JS 中的点符号访问元素。

使用子元素代替for 属性将:

  • 让您不必生成唯一 ID(如果类似的表单可以出现在单个页面上,这尤其有用)
  • 限制您的样式选择
  • 兼容较少的浏览器(我认为唯一的损失是老版本的IE,没什么大的损失)。

所以有利有弊,你必须决定什么是适合你的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2022-06-10
    • 2011-05-22
    • 2016-02-15
    • 1970-01-01
    相关资源
    最近更新 更多