For AI agents: the complete documentation index is available at https://a3s-lab.github.io/UI/v0.4.1/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/UI/v0.4.1/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/UI/v0.4.1/components/field.md.

表单字段

表单字段把一个控件的常驻标签、填写要求、说明与局部错误组织成一个完整输入单元,不额外制造第二套交互模型或无意义的无障碍分组。

工作区显示名称

用于导航、邀请和审计记录,长度为 2 到 40 个字符。

用法

导入 Tailwind 和一个完整的 A3S UI 样式包:

@import "tailwindcss";
@import "@a3s-lab/ui/a3s.css";

按组件加载时,依次导入基础样式、Field 结构、所用控件结构和一个视觉样式:

@import "@a3s-lab/ui/base.css";
@import "@a3s-lab/ui/components/field.css";
@import "@a3s-lab/ui/components/input.css";
@import "@a3s-lab/ui/styles/a3s.css";

一个控件只使用一个普通的 <div class="field">。原生控件继续负责聚焦、编辑、校验与表单行为,Field 只负责周围的内容关系。

<div class="field">
  <label for="workspace-name">工作区显示名称</label>
  <input
    id="workspace-name"
    name="workspaceName"
    dir="auto"
    aria-describedby="workspace-name-help"
    required
  />
  <p id="workspace-name-help" data-field-description>用于导航和邀请。</p>
  <p id="workspace-name-error" data-field-message role="alert" hidden>
    请输入工作区名称。
  </p>
</div>

不要给单个 Field 添加 role="group"。它不会改善控件名称或说明,只会在无障碍树中增加一个未命名分组。多个控件共同回答一个问题时,使用原生 <fieldset> 和 <legend>。

参数

契约用途
.field一个控件及其支持关系的结构根节点
<label for>常驻可见名称,for 必须匹配控件 id
required 或可见的“可选”说明表达能否省略,不能只依赖装饰符号
data-field-description通过 aria-describedby 关联的常驻说明
data-field-message当前局部错误,仅在校验后显示,并在显示期间与控件关联
data-invalid="true"校验失败后 Field 的视觉状态
data-disabled="true"与控件原生 disabled 配套的不可用视觉状态
data-readonly="true"与支持控件的原生 readonly 配套的只读视觉状态
data-orientation="horizontal"在关系仍清晰时水平排列控件与标签内容
data-orientation="responsive"默认堆叠,并在较宽的 Field 容器中改为水平排列

状态和变体

空值与已填写都是中性值状态。只有执行校验后才能进入错误状态。禁用和只读是不同的可用性契约,不能合并成同一种淡化外观。

必填和可选

在标签旁只说明一次填写要求。原生 required 是机器可读契约,可见文字则帮助用户在提交前规划填写内容。

填写要求

用于接收账户恢复和账单通知。

仅工作区管理员可见。

禁用和只读

禁用会让控件退出焦点与表单提交;只读仍允许聚焦、选择、复制和提交。两种状态都要保留当前值,并解释为什么不能编辑。

可用性语义

归档标识会保留在审计记录中,但不能参与提交。

该值仍可选择并参与提交,只有组织转移才能修改。

相关字段

多个控件共同回答一个问题时,使用一个原生 Fieldset。每个子项仍是只包含一个控件的普通 Field,不需要未命名的 role="group" 包装层。

相关控件
发布窗口

用于安排生产环境交接。

响应式方向

只有在标签、说明和控件仍保持清晰关系时才使用响应式方向,语义顺序始终不变。

响应式字段

输入任务完成后成果继续可用的天数。

RTL

在 Field 或祖先节点设置布局方向。邮箱、网址等机器值继续使用原始文本方向。

RTL 字段

يُستخدم لإشعارات الاسترداد وإدارة مساحة العمل.

无障碍

  • 保留一个常驻可见标签,并通过 for 与 id 关联。占位文字不能成为唯一名称。
  • 普通说明始终放在 aria-describedby 中。校验失败后追加可见错误 ID,恢复或重置后及时移除。
  • 无效 Field 保留用户尝试的值,把焦点放回可操作控件,用文字说明问题与具体修正方法,不能只显示红色。
  • 单个 Field 不使用 role="group"。只有多个控件共同构成一个问题时才使用 <fieldset> 与 <legend>。
  • 只有值必须离开焦点和提交时才使用 disabled;用户仍需查看、选择、复制或提交值时使用 readonly。
  • 无法预先确定方向的用户输入自由文本使用 dir="auto";邮箱、网址、路径等机器值保持原始文本方向。
  • 输入法组合期间不执行校验、裁剪或提交,等待组合输入结束。
  • 发布前验证长本地化标签和错误、390px 布局、200% 缩放、暗色、RTL、强制颜色、粗指针和屏幕阅读器与浏览器组合。

Field 不负责领域校验、服务端响应、权限、持久化、提交或错误摘要的焦点协调。Form 与宿主应用负责这些工作,同时保持 Field 的局部关系完整。