表单是网页的"入口"
注册、登录、搜索、留言、调查问卷……网页上几乎所有"输入信息"的地方都是表单。学会表单,网页就从"只能看"变成"能交流"。
表单由三部分组成:输入控件(input、textarea、select)、提交按钮、以及处理逻辑(通常用 JavaScript 或后端)。这篇文章讲清前两部分,并用 JavaScript 让表单真正"活"起来。
表单是网页从展示走向应用的第一步。
- input类型决定输入方式。
- label让表单更易用。
- submit提交动作触发。
- JS 校验让数据更可靠。
input:各种各样的输入框
input 是表单的主角,靠 type 属性决定输入方式:text 普通文本、email 邮箱、password 密码、number 数字、date 日期。
<input type="text" name="username" placeholder="请输入用户名">
<input type="email" name="email" placeholder="you@example.com">
<input type="password" name="pwd">
<input type="number" name="age" min="0" max="120">
name 属性很重要:提交数据时它就是"数据的名字",后端靠它识别每个字段。
textarea 与 select
text 只能输一行,多行文字用 textarea;从固定选项里选一个用 select。
textarea 的 rows 和 cols 控制显示大小,但实际内容可以无限多;select 里每个 option 的 value 是提交给后端的值,而文字是用户看到的,两者可以不同。还有一组很常用的控件是单选框 radio 和复选框 checkbox:radio 一组只能选一个(靠相同的 name 分组),checkbox 可以多选。做一个"兴趣调查"时,单选年级用 radio,多选爱好用 checkbox,正好把两种控件的区别练明白。
<textarea name="msg" rows="4" cols="40"></textarea>
<select name="grade">
<option value="g6">六年级</option>
<option value="g7">七年级</option>
</select>
label 与无障碍
每个输入框都应该配一个 label,用 for 属性指向输入框的 id。这样点击文字就能聚焦输入框,读屏软件也能正确读出含义。
<label for="uname">用户名</label>
<input type="text" id="uname" name="username">
无障碍不是加分项,而是合格网页的基本要求。
按钮与提交
表单里放一个 submit 按钮,点击后浏览器会把所有有 name 的控件打包提交。提交方式常用 GET 或 POST:GET 适合搜索(数据出现在网址里),POST 适合留言(数据在请求体里)。
<form action="/api/msg" method="post">
<input type="text" name="title">
<button type="submit">提交</button>
</form>
JavaScript 校验与交互
提交前先用 JavaScript 检查数据,体验比后端校验更好。监听 submit 事件,用 preventDefault 拦下提交,校验通过后再放行。
form.addEventListener("submit", function (e) {
const name = document.getElementById("uname").value.trim();
if (name === "") {
e.preventDefault();
alert("用户名不能为空");
}
});
还可以实时反馈:输入时监听 input 事件,随时提示格式是否正确。
综合项目:简易留言板
把今天学的合起来做一个简易留言板:一个名字输入框、一个留言 textarea、一个提交按钮;提交后把留言动态追加到页面下方列表里。
- 用 form 收集数据;
- 用 JS 校验非空;
- 用 DOM 操作把新留言插入列表。
这个项目做完,孩子就能理解"输入 → 处理 → 输出"的完整链路,为学后端打基础。
- 表单收集用户输入。
- name决定数据键名。
- JS 校验提升体验。
- 留言板完整小项目收尾。