【发布时间】:2011-03-04 08:24:23
【问题描述】:
为什么<input> 表单元素需要 name 和 id 属性?
哪些用于 POST 数据发送,哪些可以排除?
【问题讨论】:
为什么<input> 表单元素需要 name 和 id 属性?
哪些用于 POST 数据发送,哪些可以排除?
【问题讨论】:
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
在查询字符串附加隐藏输入时很受欢迎:
<input type="hidden" name="q" value="1">
【讨论】:
name 用于 POST 和 GET。
id 用于样式。
class 用于将相同的样式应用于同一“类”的一堆元素。
这就是我记忆它们的方式。
【讨论】:
name 是在发帖时确定“变量名”的属性。 id 用于 JavaScript 等用途。
【讨论】:
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。
您为什么想要一个没有name 的input?
JavaScript 仍然可以访问该值并对其进行处理。
【讨论】:
Name 是必需的,以便您可以在下一页中发布或获取值。 Id 是您使用 CSS 和类似的东西进行操作所必需的。也可以仅使用名称。所以名字更重要。提供 id 使其看起来标准化。
【讨论】:
name 是必需的,id 并不重要。但是,id 用于将标签关联到常见的表单输入字段,如单选按钮、文本框等。
【讨论】:
name 属性是必不可少的。跨度>