下拉框必须设置非空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),不是拼成逗号字符串url.parse() 或 Python 的 request.form.getlist(),需确认是否支持同名多值解析id 当 name 用常见错误:只写了 id="user_role",以为表单能自动提交,结果后端始终收不到 user_role

id 仅用于 CSS 或 JS 选择器,和表单数据提交无关。必须单独写 name:
容易被忽略的一点:如果页面有多个同名 name 的表单控件(比如两个 ),提交时后端通常只收到最后一个的值——除非明确使用数组式命名或服务端做特殊处理。