为什么我需要 <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">
用于 POST 和 GET。
id用于样式。
class用于将相同的样式应用于同一“类”的一堆元素。 我就是这样记住它们的。
name
是决定发帖时“变量名称”的属性。
id
用于 JavaScript 目的等。
命名表单控件:name属性确认它不是强制的:
名称内容属性给出了表单控件的名称,在表单提交和表单元素的元素对象中使用。如果指定了该属性,则其值不能为空字符串或 isindex。如果不指定会怎样?
在 Chromium 75 中,我用
nc
<!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
,它根本就不会。
两者都通过了HTML 验证器。
input
的name
?JavaScript 仍然可以访问该值并用它做一些事情。
Id 才能使用 CSS 等进行操作。仅通过名称也是可能的。所以名字更重要。给出 id 使其看起来标准化。
只想添加名称属性无线电元素)。 通过 name 属性,无线电组中的无线电将属于在一起。下面的例子:
<p>Colors</p>
<div>
<input type="radio" name="colors" value="red" id="radio-red"><label for="radio-red">Red</label>
<input type="radio" name="colors" value="blue" id="radio-blue"><label for="radio-blue">Blue</label>
</div>
<p>Pets</p>
<div>
<input type="radio" name="pets" value="cats" id="radio-cats"><label for="radio-cats">Cats</label>
<input type="radio" name="pets" value="dogs" id="radio-dogs"><label for="radio-dogs">Dogs</label>
</div>
供您玩的链接:
https://codepen.io/bj-rn-andreasson-jogmark/pen/PoQprja对于
id
和
form
。如果表单中包含此类元素,基于 Chromium 的浏览器将发出警告,但 Firefox 不会。
可以通过 CSS 或 JavaScript 使用复选框和单选按钮来控制后续元素的可见性(使用 CSS
display
)。这可以使页面变得整洁,并大大减少使用键盘的用户需要执行的选项卡操作量,只需在需要时单击控件即可显示隐藏元素。
这种用法不一定需要
name
或 id
属性,但如果控件具有关联的
id
元素(它们不是其后代),则需要
label
属性。对于后续元素可见性的 CSS 控制,CSS 定义中使用的元素必须是其关联的
label
的同级元素,因为
label
的子级不能在 CSS 中用于控制有关
label
或他们的后代。
id并不那么重要。但是,id用于将标签与常见表单输入字段(如单选按钮、文本框等)相关联。