前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库HTML required 属性 各控件校验差异
HTML表单与输入

required 在文本框、单选框和复选框上怎么校验?

required 表示当前控件必须满足选择或输入条件。文本框不能留空;同名 radio 组至少选一个;单个必填 checkbox 必须勾选。不同控件的“缺失”含义不同。

前端进阶之旅 · 一题精讲更新于 2026.09.29
HTML#表单与输入#表单
先看核心答案读代码示例
理解线索

必填含义随控件变化

  1. required声明必须满足的输入条件
  2. valueMissing表示必填条件未满足
  3. 控件类型决定“已有值”的实际定义

在所有复选框上写 required,意味着每一个都必须勾选,不是“至少选一项”。

核心回答

先记住这个答案

required 会让支持约束校验的控件在缺少必要输入时出现 valueMissing。文本框为空不通过;同名单选组没有任何选中项不通过;给某个复选框写 required,要求的是这个复选框被勾选。下拉框还要看当前选项是否提供有效值。它不是“同一屏任意填写一项即可”的通用组规则。

  • 文本输入为空会 valueMissing
  • 同名单选组至少选中一项
  • 必填复选框要求该项勾选
  • 禁用控件不参与普通约束校验

表单的三个必填问题

注册页需要邮箱、通知方式和协议确认。三个需求虽然都可写 required,但判断条件分别是字符串、单选组与某个复选框的选中状态。

不同控件的必填HTML
<label>邮箱 <input type="email" name="email" required></label>
<fieldset>
  <legend>通知方式</legend>
  <label><input type="radio" name="notice" value="sms" required> 短信</label>
  <label><input type="radio" name="notice" value="mail"> 邮件</label>
</fieldset>
<label><input type="checkbox" name="agree" required> 同意条款</label>

邮箱必须填写且还要满足邮箱类型约束;通知方式一组选一个;协议复选框必须勾选。required 只解决是否缺失,业务上是否允许该邮箱或通知方式仍由其他规则判断。 如果题目变成“兴趣爱好至少选一项”,不要给每个复选框都加 required,那会要求全选。应使用适当的组级自定义校验。

默认值、禁用与只读

下拉框初始已经选中一个非空有效选项,required 可能无需用户操作就通过。若希望用户明确选择,常用空值提示选项配合必填。禁用控件不参与正常约束校验;只读字段也不能当成待用户填写的必填字段。

原生校验能帮助用户及时发现遗漏,但不能作为唯一保护。脚本可以改属性,网络请求也可绕开页面,所以服务端仍要检查必填与格式。

检查必填表单时,把约束拆成三件事:控件类型是否支持 required,它当前是否参与约束校验,以及“有值”对这个类型意味着什么。文本框需要非空;单选按钮按同名组检查是否至少选中一项;复选框的 required 则针对该复选框自身,不会自动变成“这一组选一个”。禁用控件不参与校验,隐藏输入类型也不能靠 required 要求用户填写。服务器始终要重新验证,因为客户端可删除属性或直接发请求。

回答前,多想一步

容易答错的地方

给所有复选框写 required 表示至少选一项
每个必填复选框都要单独勾选。至少选一项需要另外的组级逻辑。
只要写了 required 就以为必须手动操作
控件若已有有效默认值,必填条件可能初始就满足。
试着用自己的话回答

面试官还会怎么问?

单选组每项都要写 required 吗?

通常不必;同名组内一项带必填约束就能要求组有选中值,写法应保持清楚一致。

下拉框怎样让用户主动选?

可用空值提示选项作初始选择,再给 <select> 加 required,并检查目标浏览器行为。

required 能替代服务端校验吗?

不能。客户端约束可被绕过,服务端必须重新验证关键字段。

从一道题,走向一组知识

把知识连起来

表单与输入

多选 select 怎么拿到所有选中的值?

多选 <select> 可以要求至少选一个选项,取值时需遍历选中集合。

表单与输入

select 的 size 大于 1,就能同时选多个吗?

单选下拉框若有有效默认选项,必填约束可能初始就通过。

参考资料

  • HTML:表单与输入参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 表单的三个必填问题
  3. 默认值、禁用与只读
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑