前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 optgroup disabled attribute selection
HTML表单与输入

optgroup 设为 disabled 后,里面的选项会怎样?

<optgroup disabled> 会让这一组的 <option> 在界面上不可供用户选择,但分组标题仍可显示。它不会禁用整个 <select>,其他组依旧可选。

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

禁用的是一组选项

  1. <select>承载整个选择控件
  2. <optgroup>用标签组织一组选项
  3. disabled限制该组子选项供用户选择

已经存在的选择状态与脚本操作需要单独检查,不能把禁用当作清空数据的命令。

核心回答

先记住这个答案

可以给 <optgroup> 写 disabled。浏览器会把组内选项呈现为不可选择,组的 label 仍帮助用户理解分类;同一个 <select> 里其他未禁用的选项仍可使用。它适合暂时未开放的地区、套餐或库存分组。若要让整个控件无法操作,应禁用 <select>;若只停用一个条目,应禁用对应 <option>。

  • disabled 可禁用整个 <optgroup>
  • 组内选项不可由用户选择
  • 其他选项组不受影响
  • 分组标签由 label 提供

一组套餐暂时不可选

例如基础套餐可以下单,高级套餐还在内测。禁用高级组比给每个选项单独加状态更容易维护,用户仍看得到有哪些高级选择,但不能在界面里选中。

按组关闭候选HTML
<label>套餐
  <select name="plan">
    <optgroup label="已开放">
      <option value="basic">基础版</option>
    </optgroup>
    <optgroup label="内测中" disabled>
      <option value="pro">专业版</option>
    </optgroup>
  </select>
</label>

用户可以选择基础版,却不能从内测组选择专业版。这里的禁用范围是选项组,不会连带禁用整个表单或其他控件。 label 是分组在界面和辅助技术中可识别的名称,不要只靠颜色让人猜哪组不可用。若禁用原因重要,可以在控件旁提供文字说明。

禁用状态不是业务权限

已有页面状态、脚本赋值以及服务端接收值的行为,应与用户交互限制分开考虑。即使界面阻止选择,攻击者也能构造请求提交任意套餐值,服务端必须判断套餐是否真的开放。

当业务条件变化、需要恢复该组时,可以移除 disabled。如果只需要关闭一个选项,用 <option disabled> 更精确;如果整个字段本身不适用,用 <select disabled> 更明确,而且会影响表单提交行为。

禁用一整个 <optgroup> 时,里面的选项仍会显示在列表里,用户能看见“企业版暂不可选”,但不能正常选择。它适合暂时展示不可购买的套餐,不适合隐藏敏感选项。服务端仍要验证提交的具体选项是否对当前用户开放;攻击者可以直接发送任意 value。若只是想给选项分类,不要加 disabled,因为禁用会改变键盘导航和可选结果。

回答前,多想一步

容易答错的地方

以为禁用组会禁用整个下拉框
同一 <select> 里其他组和未分组的选项仍可选择。
把禁用当成安全校验
前端禁用只控制正常交互,不能阻止直接构造请求;服务端仍应验证值是否允许。
试着用自己的话回答

面试官还会怎么问?

<optgroup> 能嵌套吗?

常规选择列表按一层选项组组织。需要多级结构时应重新设计控件,不要假设嵌套组有一致支持。

只禁用一个选项怎么做?

直接给那条 <option> 加 disabled,不影响同组其他选项。

组标题会成为提交值吗?

不会。提交的是被选中 <option> 的值;分组 label 主要用于说明分类。

从一道题,走向一组知识

把知识连起来

表单与输入

表单里的 output 元素适合显示什么?

<output> 可显示选择后的计算结果,但不是选项分组控件。

表单与输入

pattern 和 title 应怎样配合提示输入格式?

pattern 约束文本输入,不能用来控制选项组的可选状态。

参考资料

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

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

本题目录
  1. 先记住这个答案
  2. 一组套餐暂时不可选
  3. 禁用状态不是业务权限
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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