---
id: "input-error"
title: "错误说明、必填与输入校验"
category: "输入组件"
document_type: "component-specification"
spec_status: "local-current-draft"
element_ui: "2.15.6"
vue: "2.6.14"
page: "../index.html#spec-input-error"
source_data: "../component-data.json"
official_components: []
template_components: ["el-button", "el-input"]
scenario_count: 9
verification: "scenario-checklist-not-full-test-pass"
---

# 错误说明、必填与输入校验

专题 `input-error` · 输入组件 · Element UI 2.15.6

## 适用范围与组件映射

公共色板及字体基线适用于整个运营后台。本库整理基础组件、组件状态和可复用的组合模式；本轮补齐表单整体验证、页面布局和导航组合；具体业务字段与跨页流程仍在业务场景中说明。专题验收清单包含接入要求，不表示当前示例已实现或已验证全部场景。

本专题为基础规则、同一组件的补充场景或组合模式，不作为独立的 Element UI 官方组件声明。

本页模板直接使用的 Element UI 标签：`el-button`、`el-input`。

## 通用基线

- 组件库：Element UI **2.15.6**；运行样例 Vue **2.6.14**。
- 系统中文字体：macOS 优先苹方，Windows 通常微软雅黑；工程顺序固定为 `"PingFang SC", "Microsoft YaHei", sans-serif`。不要求安装或加载网络字体，兼容回退不是另一套可选样式。
- 后续仅采用经验证且固定版本的兼容 Element UI 2.x；Element Plus 属于独立迁移路线。
- 正文、数据值、输入及已选值：`14px / 400 / 21px`，`#303133`。
- 表头及组件分组标题：`14px / 600 / 21px`；弹窗标题：`16px / 600 / 24px`，均使用 `#303133`。
- 辅助说明：`12px / 400 / 18px`，`#595959`；错误、链接、状态、禁用与占位按各自语义处理。
- 适用组件的默认尺寸为 `small / 32px`；不得将这一高度机械应用于表格、文本域、浮层等全部组件。
- 规范正文与场景说明使用 `14px / 400 / 24px`、`#303133`，不降成灰蓝小字。
- 筛选文本输入占位统一“请输入”；未选择下拉统一“请选择”；默认全部的下拉显示“全部”。字段标签保留业务含义；日期保留开始/结束语义。
- 次级文字操作（查看更多、编辑、详情、数据中心、更多）：`12px / 400 / 18px`，`#3377BB`；保留点击热区。
- 本规范库的深色目录、蓝色展示区属于文档排版，不是业务组件颜色或业务导航规范。

## 本页用法与分类

默认用法：默认只显示标签、必填标记和可编辑输入；占位已提供输入指引时不重复添加默认说明。当前示例点击“检查输入”后校验非空，初次进入不自动报错；仅错误时显示对应提示。

| 区分什么 | 本页内容 | 选用或触发条件 |
| --- | --- | --- |
| 校验规则（字段约束） | 必填、长度和格式描述哪些值有效。 | 本页只演示必填非空；长度、格式及跨字段规则须由对应业务定义，不能把清单当成已接入功能。 |
| 校验时机（功能配置） | 按钮检查、失焦检查及值变化检查决定何时判断。 | 本页用“检查输入”按钮触发；输入有效内容后清除已有错误。宿主采用其他时机时，应明确其触发条件。 |
| 普通、错误与恢复（自动状态） | 红边、红色短提示和错误标识随校验结果同步。 | 未触发或已有效时用普通状态；校验失败才显示错误。再次聚焦错误字段仍保留红边，不能手工任选。 |

使用边界：不要把红边输入作为默认必填样式，也不要把远程校验写成本页已经具备的能力。

## 组件规则

- **INPUT-ERROR-R01**：仅定义单个输入组件错误态，不规定任何业务表单。必填标记与辅助技术识别的必填状态（aria-required）一致；标签、说明和错误通过唯一标识（id）关联。
- **INPUT-ERROR-R02**：必填标记统一放在字段名称前：使用错误红星号，与文字间距4px；只显示一次，不放在输入框后。星号对辅助技术隐藏，控件按真实规则设置aria-required；复选组合只表达整组至少选一项，不把组内每项标成必填。
- **INPUT-ERROR-R03**：输入与错误说明共用输入框专题的宽度规则；校验不改变控件边框宽、内距或所在内容列，长错误文字只在框下换行，不挤宽输入。
- **INPUT-ERROR-R04**：错误文案就近显示 12px / 400 / 18px；边框与文字同时提示。首次进入未操作时不满屏报错。
- **INPUT-ERROR-R05**：示例只校验非空；业务长度、格式和金额限制必须由实际合同提供。修正后清除对应错误。
- **INPUT-ERROR-R06**：【公共用色】颜色仅从公共色值 引用：主色系 3 个基础色值、辅助功能色 3 个、中性色 10 个，共 16 个基础色值。角色可以多个，实际色值复用；不为每个组件、悬停 或不同字段再新增近似颜色。透明效果仅限遮罩 35% 与阴影 12%，从 外壳深色 派生。
- **INPUT-ERROR-R07**：【统一字体】统一系统中文字体：macOS 优先苹方（PingFang SC），Windows 通常使用微软雅黑（Microsoft YaHei）；工程顺序固定为 "PingFang SC", "Microsoft YaHei", sans-serif。使用设备已有字体，不要求安装或加载网络字体；最后一项仅作兼容回退，不是供页面作者任选的另一套样式。正文 14px/400/21px；表头与分组标题 14px/600/21px，弹窗标题 16px/600/24px；次级文字操作和辅助说明 12px/400/18px。正文与标题同用 #303133；不通过额外加粗或透明度改变正文轻重。
- **INPUT-ERROR-R08**：【可编辑 / 已填写】白底 白色、正文 正文深灰、边框 边框灰；能输入不等于用主色填满。
- **INPUT-ERROR-R09**：【悬停 / 聚焦】悬停保持 边框灰；鼠标与键盘聚焦均只将现有 1px 边框改为 主题蓝，不增加外圈、阴影或第二层框。
- **INPUT-ERROR-R10**：【错误 / 错误聚焦】边框 错误红；说明 错误红 + 明确错误文案，错误边框优先于蓝色聚焦边框，不叠加第二层外框。
- **INPUT-ERROR-R11**：【只读 / 禁用】只读 白底、正文深灰、边框灰，可选择复制；禁用 浅灰底、禁用灰文字、边框灰，不响应操作。
- **INPUT-ERROR-R12**：【占位 / 加载】占位 禁用灰，标签仍用 正文深灰；加载图标 主题蓝，值仍 正文深灰，不把值改成占位灰。
- **INPUT-ERROR-R13**：【组件边界】必填星号 错误红；未提交前不要把所有空输入都画成错误。
- **INPUT-ERROR-R14**：【叠加优先级】状态叠加规则：禁用阻断交互；输入类控件错误边框覆盖蓝色聚焦边框；输入框不叠加外圈或阴影，其他无边框操作保留键盘焦点提示；选中底覆盖悬停底；只读不等于禁用；加载不等于成功；业务启用/停用的文字结果不等于控件是否可点击。
- **INPUT-ERROR-R15**：输入类反馈成组同步：普通聚焦仅原边框改为主题蓝，普通说明保持辅助深灰；校验失败时边框与就近错误短提示使用错误红，若配置错误图标也同步使用错误红。错误清除时相关视觉与 aria-invalid 一起恢复；不能仅因聚焦就报错，禁用后不触发新校验。当前基础示例不强制增加错误图标，错误含义必须有文字表达。
- **INPUT-ERROR-R16**：输入族统一直角 0px：普通输入、密码、文本域、自动补全、单选/多选触发框、级联、日期/时间与范围、数字输入及前后缀组合输入；默认/聚焦/错误/只读/禁用均不改变圆角。组合输入外侧和拼接处均不保留小圆角，弹出面板的圆角由面板规范独立定义。
- **INPUT-ERROR-R17**：条件改变后，只让当前有效分支参与校验与提交；隐藏或禁用的字段不能带着旧值误提交。各分支草稿分别保留，切换时清除过期错误；清除整组时一并清除草稿。
- **INPUT-ERROR-R18**：填写区只保留影响操作的格式、限制、必填或错误说明；不逐字段重复“本地演示、不代表正式数据”等提示。原型数据保存范围、接口与未接入能力集中记录在规范文档，不写进业务操作文案。
- **INPUT-ERROR-R19**：必填和错误语义必须落到实际控件：标签与错误提示关联稳定ID；组合选择的必填属于整组，不能让每个复选项、筛选关键词或上传按钮都变成必填。切换状态后同步更新，保留明确选填的字段。

## 场景与验收清单

以下为需核对的场景组；`[ ]` 不代表已经测试通过。

- [ ] **INPUT-ERROR-S01**：当前示例只核对必填非空。长度、格式、跨字段依赖及服务端错误属于业务接入规则，按实际采用的规则另行验收。
- [ ] **INPUT-ERROR-S02**：当前示例：默认无重复帮助文案；按钮触发检查时显示错误并建立描述关联，有效纠正后移除提示和关联。宿主若采用失焦、值变化或异步校验，再核对旧结果丢弃与字段卸载后的取消处理。
- [ ] **INPUT-ERROR-S03**：当前必填示例核对普通、聚焦、错误和有效纠正后的恢复；红色边框、短提示及 aria-invalid 同步。只读和禁用按宿主实际配置验收，不把行选中状态套到文本框。
- [ ] **INPUT-ERROR-S04**：核对正文14/400、次级操作12/400、标题600及同色深正文；检查实际弹出层和子 span，不能只检查父元素。
- [ ] **INPUT-ERROR-S05**：验证完整反馈组合：默认→聚焦→失败→再次聚焦→有效纠正→恢复；检查边框、提示、图标和 aria-invalid 一起变化。
- [ ] **INPUT-ERROR-S06**：检查输入族四角及组合拼接处为0px，包含默认、聚焦、错误、禁用和只读状态。
- [ ] **INPUT-ERROR-S07**：宿主联合表单接入后验收：输入、下拉、文本域和数字各自校验；修正一项只清除对应错误，错误状态再次聚焦仍无外圈。当前专题基础示例不等于完整业务表单。
- [ ] **INPUT-ERROR-S08**：宽度联动验收：按输入框专题核对整项与边框口径、同组对齐、长内容、窄容器换行及状态不跳宽。
- [ ] **INPUT-ERROR-S09**：核对必填星号在字段名前、间距4px且无重复；非必填字段无星号。错误短提示在对应内容列下方，与输入框左边界对齐；标签、必填和错误语义与真实字段规则一致。

### 专题验收重点

首次进入及单纯聚焦不报错，输入下方不显示重复默认说明；点击“检查输入”检查空值并关联实际错误提示。输入有效内容后移除该错误提示及其aria-describedby关联，恢复aria-invalid；关联不能指向空提示或不存在的节点。

## 当前示例模板

以下来自本专题的结构化示例，使用 Vue 2 模板语法。`v-model`、事件方法、数据列表等依赖 [components.js](../components.js)；完整样式文件及加载顺序见 [通用基线](FOUNDATIONS.md)。自定义组合标签的内部实现由下方依赖文件提供，不能仅复制标签作为完整组件。

```html
<div class="required-field">
<label class="audit-field-label" for="required-value">
<span class="required-mark" aria-hidden="true">*</span>示例值</label>
<el-input id="required-value" aria-required="true" v-model="validationText" placeholder="请输入" :class="{'is-error':validationError}" :aria-invalid="validationError?'true':'false'" :aria-describedby="validationError?'required-help':null" @input="validationError=validationError &amp;&amp; !validationText.trim()" label="示例值">
</el-input>
<p v-if="validationError" id="required-help" aria-live="polite" class="danger help">请输入示例值</p>
</div>
<el-button @click="validateIndependentRequired">检查输入</el-button>
```

## 交付与使用边界

- 规范条款、示例代码与待验收场景分开理解；有示例不等于已覆盖所有样式、交互状态和使用场景。
- 业务接口、权限、时区、金额精度、数据规模等依赖应从实际项目读取，不使用演示值代替生产约定。
- 发生样式或文案变更时，同步专题数据、页面与 Markdown，避免规范和样例分离。

## 来源与关联

- 来源线索：历史样板规范 74；本次可访问关联补充。
- [打开本专题页面](../index.html#spec-input-error)
- [通用基线](FOUNDATIONS.md)
- [规范总索引](README.md)
- [结构化规范数据](../component-data.json)（记录 id：`input-error`）
- [原始历史样板](../original-20260621.html)
- [历史规范条目](../spec-notes.json)

## 本组件颜色状态表

| 状态 / 条件 | 统一规则 |
| --- | --- |
| 可编辑 / 已填写 | 白底 白色、正文 正文深灰、边框 边框灰；能输入不等于用主色填满。 |
| 悬停 / 聚焦 | 悬停保持 边框灰；鼠标与键盘聚焦均只将现有 1px 边框改为 主题蓝，不增加外圈、阴影或第二层框。 |
| 错误 / 错误聚焦 | 边框 错误红；说明 错误红 + 明确错误文案，错误边框优先于蓝色聚焦边框，不叠加第二层外框。 |
| 只读 / 禁用 | 只读 白底、正文深灰、边框灰，可选择复制；禁用 浅灰底、禁用灰文字、边框灰，不响应操作。 |
| 占位 / 加载 | 占位 禁用灰，标签仍用 正文深灰；加载图标 主题蓝，值仍 正文深灰，不把值改成占位灰。 |

必填星号 错误红；未提交前不要把所有空输入都画成错误。

[公共颜色与字体 token](../color-tokens.json) · [公共组件样式](../color-contract.css) · [系统字体合同（最后加载）](../font-contract.css)

## 业务落地场景

- [新增账号 · 新增会员提交 · 必填、格式及重复账号校验](../../showcase/index.html?example=member-form#create-account) · [场景文档](../../showcase/docs/create-account.md)
- [存款记录 · 筛选金额等条件的合法性提示](../../showcase/index.html#deposits) · [场景文档](../../showcase/docs/deposits.md)
- [账户调整审核 · 审核备注为空、超限及操作限制提示](../../showcase/index.html#account-audit) · [场景文档](../../showcase/docs/account-audit.md)
- [活动管理 · 编辑活动 · 必填、日期范围校验与逐字段纠错](../../showcase/index.html#campaigns) · [场景文档](../../showcase/docs/campaigns.md)；落地范围：采用当前字段规则、逐字段纠错和条件分支校验；不代表已接入生产服务端校验。
- [广告管理 · 新增/编辑广告 · 标题、链接与中文素材校验](../../showcase/index.html#adverts) · [场景文档](../../showcase/docs/adverts.md)；落地范围：采用当前字段规则、逐字段纠错和条件分支校验；不代表已接入生产服务端校验。
- [公告管理 · 新增/编辑公告 · 必填校验与逐字段纠错](../../showcase/index.html#notifications) · [场景文档](../../showcase/docs/notifications.md)；落地范围：采用当前字段规则、逐字段纠错和条件分支校验；不代表已接入生产服务端校验。
- [通知管理 · 新增/编辑通知 · 接收范围、定时分支与逐字段纠错](../../showcase/index.html#site-messages) · [场景文档](../../showcase/docs/site-messages.md)；落地范围：采用当前字段规则、逐字段纠错和条件分支校验；不代表已接入生产服务端校验。
- [个人中心 · 资料和密码字段校验 · 存储失败后的草稿恢复](../../showcase/index.html#personal-center) · [场景文档](../../showcase/docs/personal-center.md)；落地范围：采用当前字段规则、逐字段纠错和条件分支校验；不代表已接入生产服务端校验。
- [客服工单管理 · 新增工单 · 条件必填与格式提示](../../showcase/index.html?example=ticket-create#tickets) · [场景文档](../../showcase/docs/tickets.md)

[竞品组件拆解](../../reference-review/竞品组件反推规范.html) · [业务场景分类](../../业务场景分类清单.md)
