表单必须设 method="post" 且 action 指向有效接口;radio 按钮需同 name 才能单选;任一 radio 加 required 可防止空提交;推荐用 替代 input[type=submit]。

表单必须包含 method="POST" 和 action
浏览器默认用 GET 提交表单,但投票数据不该出现在 URL 里(比如 ?choice=cat&choice=dog),也不该被缓存或书签保存。必须显式写 <form method="POST" action="/vote"></form>。这里的 /vote 是后端接收地址,本地测试时可先设为 action="#" 避免跳转,但上线前务必改成真实接口。
<input type="radio"> 要用相同 name 才能单选
很多人把每个选项的 name 写成不同值,结果变成多选——投票就失效了。所有选项必须共用一个 name,比如 name="favorite_pet",浏览器才识别为一组互斥选项。
常见错误示例:
<input type="radio" name="a"> 猫<br><input type="radio" name="b"> 狗→ 实际是两个独立单选框
正确写法:
<input type="radio" name="favorite_pet" value="cat"> 猫<br><input type="radio" name="favorite_pet" value="dog"> 狗<br><input type="radio" name="favorite_pet" value="bird"> 鸟
加 required 属性防止空提交
没选任何选项就点提交,表单会静默通过(除非 JS 拦截),后端收到空值容易出错。在任意一个 <input type="radio"> 上加 required 即可触发浏览器原生校验——注意:只加在一个上就行,同 name 组内任一元素有 required,整组就变成必填。
- 加在第一个
<input>上最稳妥 - 不要给所有
radio都加required,冗余且无意义 - 如果用
<select></select>替代radio,required要加在<select></select>上,并确保第一个<option></option>是空值(value="")
提交按钮别只靠 <input type="submit">
纯 <input type="submit"> 按钮样式难调、语义弱。推荐用 <button type="submit"></button>,它支持内嵌 HTML、更好控制宽高和文字换行,也更利于无障碍访问。
容易忽略的点:
- 必须写
type="submit",否则默认是type="button",点不动 - 按钮文字建议明确,比如“提交投票”而不是“确定”
- 如果加了 JS 监听,记得在事件处理函数里用
event.preventDefault()阻止重复提交,但前提是后端已返回成功响应
action 对应的后端路由必须能接收 POST 请求、解析表单数据(如 request.form['favorite_pet'])、更新计数并返回结果页或重定向——这部分 HTML 做不了,但前端漏掉 method 或 name 一致性,后端永远收不到有效值。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











