表单与输入


几乎每个能替你做点事的网站——搜索框、登录、结账、评论区——背后都是一个表单在支撑。表单让页面不再只是单向展示,而是开始"倾听"访问者:它收集别人输入、勾选或选择的内容,然后把这些数据交出去,让后面的程序去处理。这一章要讲的,就是让这一切成为可能的 HTML。
form 元素
表单(form) 是一个容器,把访问者要填写的东西都装在一起。你把输入框和按钮包在一个 <form> 元素里,表单的任务就是在访问者填完之后,把所有内容收集起来一并发出去。
<form>
<label>你的名字</label>
<input>
<button>发送</button>
</form>可以把它想成你在诊所填的纸质表格:整张纸上有很多空格,你逐一填写,最后把整张纸一起交回去。<form> 元素就是那张纸。
<form> 是装着你的输入框和按钮的容器,当有人提交时,它会把所有内容一起发出去。想象一下桌上的纸质表格:一张纸,很多格子,一次性交回去。把字段包在一个表单里,你就能获得这种"收集再发送"的行为,什么额外的事都不用做。 输入框与标签
<input> 是访问者输入内容的框。但单独放一个输入框,它就只是个空盒子,谁也不知道它是干什么用的。这正是**标签(label)**的作用:它是那段文字,告诉访问者这个框里该填什么。
<label for="city">城市</label>
<input id="city">每个输入框都需要一个标签。把两者关联起来的方法是:给输入框一个 id,然后用 for 让标签指向它,两边用同一个词。关联好之后,点击标签就会把光标定位到输入框里,这个小细节能让表单对每个人都更好用。
<input> 是给人输入的框,<label> 是告诉他们该填什么的文字。用匹配的 for 和 id 把它们关联起来,点击标签就能直接跳到输入框。给每一个输入框都配一个标签;一个孤零零、旁边没有任何文字说明的框只会让人困惑。 其他控件
不是所有内容都要用纯文本框来问。有些问题更适合用打勾、选择或从列表中挑选的方式来回答。勾选框(checkbox)是一个开/关的开关,下拉菜单则让人从多个选项中选一个。
<label>
<input type="checkbox"> 给我发送订阅邮件
</label>
<label for="size">尺码</label>
<select id="size">
<option>小</option>
<option>中</option>
<option>大</option>
</select>这些不用死记硬背。现在你只需要知道:表单可以用最适合的方式来提问——输入文字、打勾,或者从列表里选。
<input type="checkbox">,下拉菜单就是包着若干 <option> 选项的 <select>。不用死记,只要知道当问题需要时,表单不止有纯文本框这一种手段。 表单数据是如何命名和提交的
表单被发送时,每个答案都需要一个标记,好让接收方知道它来自哪个框。这个标记就是输入框的 name。你设置一次,它就会跟着这个值一起传递出去。
<label for="city">城市</label>
<input id="city" name="city">如果访问者在那个框里输入"北京",表单发送的就是"city 是北京"这样一对信息。name 就是接收方用来区分不同答案的依据。没有 name 的输入框会被完全排除在提交内容之外,所以正是这个不起眼的属性,才让数据真正能显示出来。
name 就是它答案上的标签,这样接收方才知道某个值来自城市框还是邮箱框。设置好 name,框里的值就会作为一个带标签的数据对被发送出去。忘了设置,这个字段就会悄悄被漏掉,很多人第一次遇到表单什么都没送回来时,就是栽在这里。 
