为何安全问题答案的input标签无需设置value属性?
文本输入框无需预设value也能传值的原因
- 对于
<input type="text">这类用户可手动输入的表单控件,完全不需要提前设置value属性——用户在输入框中填写的内容,会被浏览器自动作为该控件的value值,配合name属性一起发送给服务器。 value属性的作用是给输入框设置默认预填内容,比如你想让输入框一开始就显示"请输入安全问题答案",才需要写value="请输入安全问题答案",它并不是表单传值的必要条件。- 表单元素能被服务器识别的核心是
name属性:服务器接收数据时,是通过name来匹配对应值的。你代码里的<input>已经设置了name="answer",只要用户输入了内容,浏览器就会把answer=用户输入内容这个键值对提交给服务器。
举个实际例子:
假设你选了第一个安全问题,并且在answer输入框里填了"皮卡丘",浏览器提交表单时就会发送两组数据:question=q1 和 answer=皮卡丘,整个过程不需要你给input手动设置value。
而像下拉框的<option>需要写value,是因为这些选项是固定的,必须给每个选项指定要提交到服务器的对应值;但文本输入框是用户动态输入内容,浏览器会自动处理它的value值,不需要你提前定义。
内容的提问来源于stack exchange,提问作者ConfusedinNorway
相关产品推荐
相关产品推荐

