引入

HTML 输入控件用于让用户在网页中输入、选择或提交数据。

在表单里,<input> 是最常见的控件。它可以通过不同的 type 属性变成文本框、密码框、单选框、复选框、文件选择框等。

正文

定义

定义

HTML 输入控件是用于接收用户输入或选择的表单元素,最常见的是 <input> 标签。

<input> 本身是一个空元素,不需要结束标签。

它通常写在 <form> 中,也可以单独使用,再由 JavaScript 获取用户输入内容。

基础语法

<input type="text" name="username">

其中:

  • <input> 表示输入控件
  • type 决定输入控件的类型
  • name 表示提交表单时的数据名称

常见输入类型

文本输入框

type="text" 用于输入普通文本,例如用户名、昵称、搜索关键词。

<input type="text" name="username" placeholder="请输入用户名">

placeholder 用于显示提示文字,它只是提示,不是真正的默认值。

密码输入框

type="password" 用于输入密码,页面中通常会显示为圆点或星号。

<input type="password" name="password" placeholder="请输入密码">

密码框只是让内容在页面上不直接显示,不代表数据已经加密。

邮箱输入框

type="email" 用于输入邮箱地址。

<input type="email" name="email" placeholder="请输入邮箱">

提交时,浏览器会做一些基础格式检查,例如是否包含 @

数字输入框

type="number" 用于输入数字。

<input type="number" name="age" min="1" max="120">

minmax 可以限制数字范围,适合年龄、数量、价格等场景。

电话输入框

type="tel" 用于输入电话号码。

<input type="tel" name="phone" placeholder="请输入手机号">

它不会自动判断所有手机号格式,更多是告诉浏览器这是电话输入内容,移动端可能会弹出数字键盘。

网址输入框

type="url" 用于输入网址。

<input type="url" name="website" placeholder="https://example.com">

浏览器会做基础网址格式检查。

搜索框

type="search" 用于输入搜索关键词。

<input type="search" name="keyword" placeholder="搜索内容">

它和普通文本框很像,只是语义上更适合搜索场景,有些浏览器会显示清除按钮。

日期输入框

type="date" 用于选择日期。

<input type="date" name="birthday">

不同浏览器显示的日期选择器可能不完全一样。

时间输入框

type="time" 用于选择时间。

<input type="time" name="startTime">

适合预约时间、开始时间、提醒时间等场景。

颜色选择器

type="color" 用于选择颜色。

<input type="color" name="themeColor">

提交时通常会得到类似 #ff0000 这样的颜色值。

范围滑块

type="range" 用于选择一个范围内的数值。

<input type="range" name="volume" min="0" max="100" value="50">

它适合音量、亮度、进度这类不需要精确手动输入的场景。

选择类控件

单选框

type="radio" 用于在多个选项中选择一个。

<input type="radio" name="gender" value="male"> 男
<input type="radio" name="gender" value="female"> 女

同一组单选框要使用相同的 name,这样浏览器才知道它们属于一组。

复选框

type="checkbox" 用于多选。

<input type="checkbox" name="skill" value="html"> HTML
<input type="checkbox" name="skill" value="css"> CSS
<input type="checkbox" name="skill" value="js"> JavaScript

复选框适合兴趣、技能、标签、协议同意等场景。

默认选中

checked 用于让单选框或复选框在页面加载时默认选中。

<input type="checkbox" name="agree" checked> 我同意用户协议

写上 checked 后,用户打开页面时这个选项就是选中状态。

文件和隐藏控件

文件上传

type="file" 用于让用户选择本地文件。

<input type="file" name="avatar">

如果只想让用户选择图片,可以使用 accept 限制文件类型。

<input type="file" name="avatar" accept="image/*">

文件上传通常需要后端配合处理,单独写 HTML 只能完成选择文件这一步。

隐藏字段

type="hidden" 用于提交页面上不需要显示的数据。

<input type="hidden" name="userId" value="1001">

隐藏字段用户在页面上看不到,但它不是安全手段,因为仍然可以通过开发者工具查看和修改。

按钮类输入控件

<input> 也可以创建按钮,不过实际开发中更常用 <button>

<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="普通按钮">

其中:

  • type="submit" 表示提交表单
  • type="reset" 表示重置表单内容
  • type="button" 表示普通按钮,通常配合 JavaScript 使用

常见属性

name

name 是表单提交时的数据名称。

<input type="text" name="username">

如果输入控件没有 name,表单提交时通常不会把它作为数据提交出去。

value

value 表示输入控件的默认值或提交值。

<input type="text" name="username" value="admin">

对于单选框和复选框,value 是选中后真正提交的值。

placeholder

placeholder 用于显示输入提示。

<input type="text" name="nickname" placeholder="请输入昵称">

它的作用是提示用户该输入什么,不适合放必须让用户长期看到的重要说明。

required

required 表示必填。

<input type="text" name="username" required>

写上 required 后,如果用户没有填写,提交时浏览器会提示用户补全。

disabled

disabled 表示禁用控件。

<input type="text" name="username" value="admin" disabled>

被禁用后,用户不能点击、输入或修改内容,而且这个控件通常不会提交数据。

readonly

readonly 表示只读。

<input type="text" name="username" value="admin" readonly>

只读控件可以看到内容,但不能修改。它和 disabled 不一样,readonly 的值通常仍然可以提交。

maxlength

maxlength 用于限制最多可以输入多少个字符。

<input type="text" name="nickname" maxlength="12">

适合昵称、验证码、简短标题等有长度限制的输入内容。

minmaxstep

minmaxstep 常用于数字、日期、范围滑块等控件。

<input type="number" name="count" min="1" max="10" step="1">

其中:

  • min 表示最小值
  • max 表示最大值
  • step 表示每次增加或减少的步长

配合 <label> 使用

<label> 用于给输入控件添加说明文字。

<label for="email">邮箱:</label>
<input id="email" type="email" name="email">

for 的值要和输入控件的 id 对应。

这样点击“邮箱:”文字时,也可以聚焦到输入框,对用户更友好,也有利于无障碍访问。

例子

注册表单中的输入控件

下面是一个简单注册表单,包含文本、密码、邮箱、单选框、复选框和提交按钮。

<form action="/register" method="post">
  <label for="username">用户名:</label>
  <input id="username" type="text" name="username" required>
 
  <label for="email">邮箱:</label>
  <input id="email" type="email" name="email" required>
 
  <label for="password">密码:</label>
  <input id="password" type="password" name="password" required>
 
  <input type="radio" name="role" value="student" checked> 学生
  <input type="radio" name="role" value="teacher"> 老师
 
  <input type="checkbox" name="agree" required> 我同意用户协议
 
  <button type="submit">注册</button>
</form>

这个例子里,required 会让关键内容变成必填,checked 会让“学生”默认选中。

特点

  • <input> 是空元素,不需要写结束标签
  • type 决定输入控件的具体类型
  • name 是表单提交时的重要字段名
  • value 可以表示默认值,也可以表示提交值
  • placeholder 是提示文字,不是真正的数据
  • requiredcheckeddisabledreadonly 都是常见布尔属性
  • 单选框同一组要使用相同的 name
  • 文件上传、日期选择、颜色选择等控件在不同浏览器中的显示可能不同

注意事项

  • 表单控件最好配合 <label> 使用,点击文字也能选中或聚焦控件
  • 不要把 placeholder 当作唯一说明文字,用户输入后它会消失
  • 前端输入检查只能提升体验,不能代替后端校验
  • 密码框只是隐藏显示内容,不代表传输过程安全
  • disabled 控件通常不会提交数据,readonly 控件通常可以提交数据
  • hidden 隐藏字段不能保存敏感信息,因为用户仍然可以查看和修改
  • 上传文件时要注意文件类型、大小和后端安全检查

理解

可以把 HTML 输入控件理解为网页里的“数据入口”。

用户要输入文字、选择选项、上传文件、点击提交,本质上都是通过这些控件完成的。

<input> 自己不负责真正处理数据,它只是把用户的输入放进页面结构里,后续再交给表单、JavaScript 或后端处理。

引出

理解输入控件之后,可以继续学习 HTML 表单验证,了解浏览器如何对用户输入做基础检查。