下拉框必须设置非空name属性才能提交数据;name为空、仅含空格或用id代替均无效;多选需加multiple属性,同名控件会覆盖而非合并。

下拉框必须用 name 属性才能提交数据
HTML 表单中, 本身不会被提交,只有带 name 属性且有选中值的下拉框,其 name=value 才会出现在 POST/GET 数据里。没设 name,后端根本收不到这个字段。
name 值不能是空字符串或纯空格
以下写法无效,提交时会被忽略:
有效写法需满足:
-
name值为非空字符串,如name="category" - 避免特殊字符(如空格、点号、括号),否则某些框架解析可能出错;推荐只用字母、数字、下划线、短横线
- 若需数组式提交(如多选),可用
name="tags[]"(PHP 支持),但原生 HTML 不强制要求方括号,name="tags"在多选时多数后端也能正确接收为列表
多选下拉框要加 multiple,且 name 语义要匹配
普通单选下拉框和多选行为完全不同,name 虽然写法一样,但后端接收逻辑不同:
立即学习“前端免费学习笔记(深入)”;
注意:
- 必须显式添加
multiple属性,否则即使按住 Ctrl 点击,也只会保留最后一个选中项 -
浏览器提交时,多个选中项会以相同
name多次发送(如city=bj&city=sh),不是拼成逗号字符串 - 若后端用 Node.js 的
url.parse()或 Python 的request.form.getlist(),需确认是否支持同名多值解析
别把 id 当 name 用
常见错误:只写了 id="user_role",以为表单能自动提交,结果后端始终收不到 user_role 字段。
id 仅用于 CSS 或 JS 选择器,和表单数据提交无关。必须单独写 name:
容易被忽略的一点:如果页面有多个同名 name 的表单控件(比如两个 ),提交时后端通常只收到最后一个的值——除非明确使用数组式命名或服务端做特殊处理。











