【问题标题】:HTML Forms - Are name and id required?HTML 表单 - 是否需要名称和 ID?
【发布时间】:2011-03-04 08:24:23
【问题描述】:

为什么<input> 表单元素需要 nameid 属性?

哪些用于 POST 数据发送,哪些可以排除?

【问题讨论】:

标签: html forms post


【解决方案1】:

name 被服务器端使用。如果您计划处理该字段,这是必要的id 只是 label 元素,当屏幕阅读器单击和访问时,可以触发/调用表单控件(输入和选择)。

<form method=POST action="form-processor.php">
    <input name=first_name value=john>
</form>

结果

$_POST = array('first_name' => 'john');

如果方法是GET,则附加到查询字符串中:

http://site-name.com/form-handler.php?first_name=john

在查询字符串附加隐藏输入时很受欢迎:

&lt;input type="hidden" name="q" value="1"&gt;

【讨论】:

    【解决方案2】:

    id 不是必需的。 Name 也不是强制性的,但没有它浏览器不会发送&lt;input&gt; 的数据。 POSTGET 也是如此。

    【讨论】:

      【解决方案3】:

      name 用于 POST 和 GET。

      id 用于样式。

      class 用于将相同的样式应用于同一“类”的一堆元素。

      这就是我记忆它们的方式。

      【讨论】:

      • id 也用于将
      • 感谢 Olly,这比用
      • 使用名称属性是否有任何可访问性优势?
      • id 不用于样式。类用于样式化。
      【解决方案4】:

      name 是在发帖时确定“变量名”的属性。 id 用于 JavaScript 等用途。

      【讨论】:

        【解决方案5】:

        HTML5 引用

        Naming form controls: the name attribute 确认不是强制性的:

        name 内容属性给出了表单控件的名称,用于表单提交和表单元素的元素对象。如果指定了属性,则其值不能为空字符串或 isindex。

        如果不指定会怎样?

        在我 tested with nc 的 Chromium 75 中,它只是没有被发送:

        <!doctype html>
        <html lang=en>
            <head>
                <meta charset=utf-8>
                <title>Min sane</title>
            </head>
            <body>
                <form action="http://localhost:8000" method="post">
                    <p><input type="text" name="key" value="default value"></p>
                    <p><button type="submit">Submit</button></p>
                </form>
            </body>
        </html>
        

        发送:

        key=default+value
        

        但如果没有name,它根本不会。

        然而,两者都通过the HTML validator

        您为什么想要一个没有nameinput

        JavaScript 仍然可以访问该值并对其进行处理。

        【讨论】:

        • 你能把反问句换成陈述句吗?这不是论坛。
        • @PeterMortensen 感谢您的建议,但我宁愿保持原样。
        【解决方案6】:

        POSTGET... 需要name,但id 不需要... id 用于客户端处理。

        【讨论】:

          【解决方案7】:

          Name 是必需的,以便您可以在下一页中发布或获取值。 Id 是您使用 CSS 和类似的东西进行操作所必需的。也可以仅使用名称。所以名字更重要。提供 id 使其看起来标准化。

          【讨论】:

          • 为什么给它一个 ID 让它看起来“标准化”?你真的应该使用“必要”而不是“必需”。单词选择是编程的关键。
          • document.getElementsByName() 可以代替 document.getElementsById() 用于所有客户端操作。
          【解决方案8】:

          name 是必需的,id 并不重要。但是,id 用于将标签关联到常见的表单输入字段,如单选按钮、文本框等。

          【讨论】:

          • name 属性不是必需的。
          • @animuson,虽然我同意你的观点,但从技术上讲,我认为,如果你想对输入的数据做一些事情,那么拥有name 属性是必不可少的。跨度>
          • @ricebowl:你基本上是在说它是执行某些功能所必需的,但是对于不需要名称属性的输入字段仍有很多用途。
          • @animuson: true,但是如果需要将字段中的数据发布到服务器(进行处理),则需要name属性。
          • 需求和必要性还是有区别的。如果您正在编写说明手册,您会说“如果您打算发布数据,则需要定义名称属性”。您没有说 name 属性是必需的,因为这给了他们一个错误的假设,即他们必须总是定义 name 属性。
          猜你喜欢
          • 2022-08-15
          • 2021-10-20
          • 1970-01-01
          • 1970-01-01
          • 2010-12-14
          • 1970-01-01
          • 1970-01-01
          • 2011-05-19
          • 2014-10-18
          相关资源
          最近更新 更多