iter(g169): 表单字段支持跨列

This commit is contained in:
HIsheR
2026-10-26 16:16:07 +08:00
parent adc94cabf5
commit bd98fc8e70
7 changed files with 26 additions and 5 deletions
+3 -1
View File
@@ -184,6 +184,7 @@ const modalPick = signal('a'); // 弹窗内下拉的取值,用于演示 Esc
// —— 表单校验状态集中声明 ——
const inviteCode = signal(''); // 异步校验演示:邀请码
const note = signal(''); // 表单跨列字段的值
const username = signal('');
const email = signal('');
const formResult = signal('');
@@ -524,7 +525,7 @@ const content = h(
section(
'sec-formlab',
'表单校验',
'form + formItem:必填 / 长度 / 正则同步校验,validator 返回 Promise 即异步规则(提交会等待);全部通过才触发提交。校验不通过时顶部出现「有 N 项需要修改」汇总条(role=alert 会被读屏播报)并聚焦第一处,onError 拿到不通字段数。本例 columns: 2 走两列栅格,窄屏自动堆叠,按钮区始终整行。',
'form + formItem:必填 / 长度 / 正则同步校验,validator 返回 Promise 即异步规则(提交会等待);全部通过才触发提交。校验不通过时顶部出现「有 N 项需要修改」汇总条(role=alert 会被读屏播报)并聚焦第一处,onError 拿到不通字段数。本例 columns: 2 走两列栅格,窄屏自动堆叠,按钮区始终整行;字段传 span 可跨列(备注整宽)。',
form(
{ columns: 2, submitText: '注册', onSubmit: () => formResult(`提交成功:${username()} / ${email()} / ${city()}`) },
[
@@ -535,6 +536,7 @@ const content = h(
{ label: '邀请码', required: true, value: inviteCode, rules: [{ validator: async (v) => { await new Promise((r) => setTimeout(r, 400)); return v === 'USED' ? '该邀请码已被使用' : true; }, message: '校验未通过' }] },
textField({ placeholder: '异步规则:输入 USED 会校验失败', value: inviteCode }),
),
formItem({ label: '备注', value: note, span: 2, hint: 'span: 2 —— 多列表单里整行铺开,单列时自动退回整行' }, textarea({ placeholder: '多行备注…', value: note, rows: 2, maxCount: 120 })),
],
),
h('span', { class: 'out' }, () => formResult() || '等待提交…'),