HTML 单选按钮:name 分组、checked 与 required
HTML <input type="radio"> 创建用于从相关选项中选择一项的单选按钮。具有相同 name 的按钮在同一表单中属于同一组;为每个选项提供不同的值。仅提交所选按钮的 name 和 value。
区分组名称与每个按钮的 id
同一组中的按钮共享一个名称,但用于关联标签的每个 ID 必须是唯一的。选择具有相同名称的另一个按钮会清除先前的选择。对于独立的问题,请使用不同的名称。fieldset 和 legend 提供了一个组及其问题,但单独的不同 fieldset 并不会将同名单选按钮分成不同的选择组。
表单所有权也会影响分组:不同表单中具有相同名称的按钮不一定形成一个组。下面的示例在同一表单中将水果组和体育组分开。
完整示例:检查两个问题的值
将以下文档保存为 radio-demo.html 并在浏览器中打开。必须选择一种水果,而棒球为默认体育项目。示例防止提交并在页面上显示当前值,因此不需要服务器处理程序。
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>单选组与提交值</title>
</head>
<body>
<h1>偏好选择练习</h1>
<form id="choices">
<fieldset>
<legend>水果(必选)</legend>
<input type="radio" id="apple" name="fruit" value="apple" required>
<label for="apple">苹果</label>
<input type="radio" id="banana" name="fruit" value="banana" required>
<label for="banana">香蕉</label>
</fieldset>
<fieldset>
<legend>运动</legend>
<input type="radio" id="soccer" name="sport" value="soccer">
<label for="soccer">足球</label>
<input type="radio" id="baseball" name="sport" value="baseball" checked>
<label for="baseball">棒球</label>
</fieldset>
<button type="submit">查看值</button>
<button type="reset">重置</button>
</form>
<pre id="result" aria-live="polite"></pre>
<script>
const form = document.getElementById('choices');
const result = document.getElementById('result');
form.addEventListener('submit', (event) => {
event.preventDefault();
result.textContent = JSON.stringify(Array.from(new FormData(form).entries()), null, 2);
});
form.addEventListener('reset', () => { result.textContent = ''; });
</script>
</body>
</html>
- 最初没有选择水果,而棒球已被选中。按提交按钮:必须选择水果会阻止提交。
- 选择苹果并提交,输出包含
fruit=apple和sport=baseball。提交的是 value 中的baseball,而不是显示文字“棒球”。 - 选择香蕉以清除苹果。选择足球以清除棒球;水果选择保持不变。
- 重置会恢复为无水果选择和默认的棒球选择。重置会恢复原始的勾选状态,而不是清除所有选择。
checked · required
checked 是用于初始选择的布尔属性。checked="false" 仍然会保留该属性,并不是表达 false 的正确方式。对于初始未选择的选项,可省略该属性。使用 JavaScript 的 checked 属性读取或更改当前状态。
如果组中的任何按钮有 required,则该组中必须选择一个按钮。被选中的按钮本身不必具有 required。在这里,两个水果选项都有该属性以明确要求。
未选择任何选项的组不会出现在提交数据中。选中的选项若省略 value,会提交默认字符串 on,因此应明确设置可区分各选项的值。disabled 按钮不能操作,也不会提交。即使浏览器进行了验证,服务器仍须再次检查值是否在允许范围内。
清除选择并使用键盘
点击已选中的单选按钮不会像复选框那样清除它。如果用户需要选择“无”,请将其设计为一个单独的选项。在允许多个项目可以独立切换的问题中使用复选框。
关联标签,以便点击其文本时可以选择选项。保留原生键盘行为:使用 Tab 键到达组,然后使用方向键移动和选择。不同浏览器的焦点行为可能有所不同。MDN 单选输入参考 解释了属性和提交规则。




