Skip to content

表单组件

表单容器、各类输入控件与选择器。每个示例左侧为格式化 + 高亮的 TokUI DSL,右侧为实时渲染,点「编辑」可即时改动。所有表单控件的 label 在带 req 时都渲染必填星号。

表单容器 form

包裹一组表单控件,提交时触发 sub: 处理器或 act 原生提交。

属性含义示例
id表单标识,供按钮 form:ID 显式绑定id:loginForm
act提交地址act:/api/save
mtd提交方法mtd:post
sub提交处理器名sub:onSubmit
clk通用事件处理器名clk:onFormClick

sub: 指向的处理器需通过 TokUI.registerHandler(name, fn) 预先注册;btn 上用 sub:xxx 触发表单提交。 表单外的按钮可用 form:ID 显式绑定目标表单(见下节表单动作),不再依赖 DOM 层级。

1[card tt:登录表单]
2 [form id:loginForm act:/api/login mtd:post sub:onLogin]
3 [input l:账号 n:username ph:"请输入账号" req]
4 [pwd l:密码 n:password ph:"请输入密码" req]
5 [btngroup]
6 [btn tx:登录 v:primary form:loginForm sub:onLogin]
7 [btn tx:重置 v:ghost form:loginForm reset]
8 [/btngroup]
9 [/form]
10[/card]
加载 TokUI…
TokUI DSL · 左代码右渲染

表单动作:提交 / 重置 / 数据收集

btn 内置三类动作,由 renderer 自动解析,无需 registerHandler(仅 sub 的业务处理仍需注册)。优先级 print > reset > submit > clk

DSL动作说明
[btn form:F sub:H]提交收集表单 F 的全部字段(含 slider/rate/picker 等自定义控件的 hidden 值),调用 handler H
[btn form:F reset]重置一键复原表单 F:原生输入走 form.reset(),自定义控件走内置 _tokuiReset;可选 reset:H 在复位后回调
[btn form:F clk:H]普通点击不收集数据,走 event-bus(form: 可省略,仅用于让 handler 拿到 data

form:ID 显式绑定(关键能力):按钮放在表单外部时,靠 form:ID 精确指明收集哪个表单,跨层级、多表单互不干扰。解析用 getElementById 且校验目标为 <form>,防 id 伪造。

[form id:formA sub:onA] ... [/form]
[form id:formB sub:onB] ... [/form]
[btn tx:"提交 A" form:formA sub:onA t:primary]   ← 只收集 formA
[btn tx:"提交 B" form:formB sub:onB t:primary]   ← 只收集 formB

重置覆盖范围input/pwd/select/textarea/checkbox 等原生控件 + slider/rate/numinput/switch/transfer/picker/cascader 等自定义控件均实现复位契约(data-tokui-resettable + _tokuiReset),renderer 遍历调用并向 form 广播 tokuireset 事件供外部监听。

1[h3 表单外按钮靠 form:ID 绑定]
2[row]
3 [col span:6]
4 [card tt:表单 A]
5 [form id:fa sub:onA]
6 [input l:姓名 n:name ph:张三]
7 [input l:邮箱 n:email ph:a@x.com]
8 [/form]
9 [btngroup]
10 [btn tx:"提交 A" form:fa sub:onA v:primary]
11 [btn tx:重置 form:fa reset v:ghost]
12 [/btngroup]
13 [/card]
14 [/col]
15 [col span:6]
16 [card tt:表单 B]
17 [form id:fb sub:onB]
18 [input l:公司 n:company ph:TokUI]
19 [numinput l:人数 n:count v:5 min:1 max:99]
20 [/form]
21 [btngroup]
22 [btn tx:"提交 B" form:fb sub:onB v:primary]
23 [btn tx:重置 form:fb reset v:ghost]
24 [/btngroup]
25 [/card]
26 [/col]
27[/row]
加载 TokUI…
TokUI DSL · 左代码右渲染

值变更上报(change 事件)

表单控件用 on:"change:处理器"必须双引号)把用户的值变更实时上报给已注册的 handler,构成「用户 → AI」交互回路:

tokui
[input n:city l:城市 on:"change:onCityChange"]
[switch l:邮件通知 n:notify on:"change:onNotifyChange"]
  • 输入防抖input / pwd / textarea / numinput 停止输入 300ms 后上报,db: 可覆盖毫秒数(如 db:500)。
  • 值变即报select / radio / checkbox / switch / slider / rate / picker / transfer / cascader / datepicker 系列 / input-tag 值一变立即上报。
  • upload:选择 / 移除文件时上报 change,detail 为 {value: 文件名数组, name}
  • detail 形状:handler 签名 (detail, event, element)detail{value, name}
  • 统一出口:所有交互同时发到 new TokUI({ onEvent })onEvent('component', { type, id, event, detail })——不声明 on: 也能在宿主侧全量监听。

完整事件清单见 DSL 语法 · 交互事件上报

DSL 校验规则

input / pwd / textarea / select 支持 rule: + msg: 声明式校验规则,提交时统一执行sub / t:submit 全部路径),失败拦截提交、错误字段标红 + hint 出文案并聚焦首个错误字段:

tokui
[input n:email l:"邮箱" rule:"required|email"]
[input n:code l:"验证码" rule:"required|len:6" msg:"请输入 6 位验证码"]
[select n:city l:"城市" rule:"required" opt:"bj:北京;sh:上海"]
  • 规则管道分隔、按序短路:required email url number len:N(精确长度)min:N max:N(字符数)re:正则
  • 空值跳过非 required 规则(HTML5 同语义:空且非必填 = 合法)。
  • msg: 自定义错误文案(缺省用内置 i18n 文案);未知规则名 / 非法正则 console.warn 跳过。
  • live 组合:blur 实时校验,error 态下输入即时重检。
  • selectreq 会写原生 required 属性(多选除外,语义不符)。

打印区 print-area

标记一块 1:1 打印区域,配合 [btn print:ID] 触发浏览器打印。打印时仅该区域可见、如实还原配色与布局;打印按钮自身不进预览。

属性含义示例
id打印区标识,供 print:ID 引用id:invoice
tt可选标题(打印文档标题)tt:收款单

触发打印btnprint 动作,内置、无需 handler):

DSL行为
[btn print:invoice]打印 #invoice 打印区
[btn print:self]打印按钮所在的最近 print-area / card
[btn print]裸写,等价 print:self

打印机制:renderer 给目标加 .tokui-print-target + body[data-tokui-printing]@media print 用 visibility 仅令该作用域可见(1:1)。响应式断点已限定 screen,打印不触发堆叠。@page 页边 + 打印区内边距构成文档边界;暗色主题下强制白底省墨。

1[print-area id:invoice tt:"收款单 #20260627"]
2[row]
3 [col span:6]
4 [stat tt:应付金额 v:"12,800.00" pre:"¥ " trend:up]
5 [/col]
6 [col span:6]
7 [stat tt:已付定金 v:"3,000.00" pre:"¥ " trend:down]
8 [/col]
9[/row]
10[table bordered]
11 [thead cols:"项目,数量,单价,小计"]
12 [tr 产品授权,5,¥1800,¥9000]
13 [tr 实施服务,1,¥2800,¥2800]
14[/table]
15[p v:bold 合计:¥12,800.00 账期:30 ]
16[/print-area]
17[btngroup]
18 [btn tx:"🖨 打印此单" print:invoice v:primary]
19 [btn tx:打印本卡 print:self v:ghost]
20[/btngroup]
加载 TokUI…
TokUI DSL · 左代码右渲染

输入框 input

单行文本输入,自闭合。l 标签、ph 占位、t 原生 type、val 初值。

属性含义示例
l标签l:姓名
ph占位提示ph:"请输入姓名"
t原生 input typet:email
n字段名n:username
val默认值val:Tom
id元素 IDid:username
ml最大字符数(maxlength)ml:20
min / max / step数字边界 / 步长(t:numbermin:0 max:99
w宽度w:240
hint提示文字hint:6~16 个字符
search搜索样式(search right 图标加右侧)search
pre / app前置 / 后置文本(可带变体 文本|变体pre:¥
prebtn / appbtn前置 / 后置按钮(文本:处理器|变体prebtn:"搜索:doSearch|primary"
rule / msgDSL 校验规则 / 自定义错误文案(见 DSL 校验规则`rule:"required
sug输入联想数据源 handlersug:onSuggest
req / dis / ro必填 / 禁用 / 只读req

变体error / success(校验状态),sm / lg(尺寸),underline(下划线风格),pill(圆角),inline(标签与控件同行)。

1[input l:姓名 ph:"请输入姓名" req]
2[input l:邮箱 t:email ph:name@example.com]
3[input l:带默认值 val:张三]
4[input l:搜索框 ph:"输入关键词搜索" search]
5[input l:禁用态 ph:不可编辑 dis]
6[input l:错误状态 v:error ph:校验失败]
加载 TokUI…
TokUI DSL · 左代码右渲染

输入联想(sug)sug:数据源handler名 启用联想下拉——fn({value}) 返回数组或 Promise(项为字符串或 {v, tx}),↑↓ / Enter / Esc 导航,选定触发 change 上报。

密码框 pwd

带显隐切换的密码输入,自闭合。属性同 input,额外 toggle 控制是否允许切换明文。

属性含义示例
l标签l:密码
ph占位提示ph:"至少 6 位"
toggle显隐切换按钮toggle
req / dis必填 / 禁用req
v变体(同 inputv:error
1[pwd l:登录密码 ph:"请输入密码" req toggle]
2[pwd l:支付密码 ph:6 位数字 req]
3[pwd l:禁用态 ph:不可编辑 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

多行文本 textarea

多行文本输入容器。rows 初始行数、maxlen 最大字数、auto 高度自适应。

属性含义示例
l标签l:描述
ph占位提示ph:"请输入描述"
rows初始行数rows:4
maxrows最大行数(auto 模式)maxrows:8
maxlen最大字数maxlen:200
auto高度自适应auto
tx默认内容tx:"默认文本"
req / dis / ro必填 / 禁用 / 只读req
1[textarea l:默认值自闭合 tx:"热爱前端开发,擅长组件设计与性能优化。" maxlen:120]
2[textarea l:只读协议自闭合 ro tx:"本服务仅供学习,禁止商用。"]
3[textarea l:空容器嵌套 ph:"请简单介绍自己" rows:3]
4[/textarea]
5[textarea l:自适应高度 auto rows:2 maxrows:6 ph:"内容增多会自动撑开"]
6[/textarea]
7[textarea l:带内容嵌套 rows:4 ph:"请输入反馈"]
8 希望增加暗色主题与多语言支持。
9[/textarea]
加载 TokUI…
TokUI DSL · 左代码右渲染

下拉选择 select / opt

select 容器,子节点 opt 选项。multi 多选、req 必填。

属性含义适用
l标签select
ph占位提示select
multi多选select
n字段名select
req必填select
v变体select
tx选项文本opt
v选项值opt
chk默认选中opt

select 变体error / success

1[select l:单选部门 ph:"请选择"]
2 [opt 技术部]
3 [opt 市场部 chk]
4 [opt 运营部]
5[/select]
6[select l:多选技能 multi]
7 [opt React chk]
8 [opt Vue chk]
9 [opt Node]
10[/select]
11[select l:必选城市 req ph:"请选择城市"]
12 [opt 北京]
13 [opt 上海]
14[/select]
加载 TokUI…
TokUI DSL · 左代码右渲染

单选组 radio

radio 容器,子节点 opt 选项;同组同 n 互斥。两种写法:容器([opt] 子项)或 opt:"..." 简写(自闭合,无需 [/radio])。

属性含义适用
l组标签radio
n字段名(同组共享,提交键)radio
id组 IDradio
vinline(标签与控件同行)/ vertical(选项竖排左对齐)radio
opt简写选项串 opt:"v:文;v:文"(自闭合写法,与 [opt] 子项二选一)radio
tx选项文本opt
v选项值opt
chk默认选中opt
1[radio l:性别 n:gender]
2 [opt v:1 tx:]
3 [opt v:2 tx: chk]
4[/radio]
5[radio l:配送方式(简写) n:deliver opt:"1:快递;2:自提;3:同城配送"]
6[radio l:渠道(竖排) n:ch v:vertical opt:"1:官方网站;2:手机APP;3:门店"]
加载 TokUI…
TokUI DSL · 左代码右渲染

复选框 checkbox

三态(按是否带 opt / multi 自动判定):

形态判定写法提交值
单布尔optmulti(自闭合)[checkbox l:同意协议 n:agree chk]布尔(勾选=agree 出现)
简写多选opt(自闭合)[checkbox n:tag l:标签 opt:"1:A;2:B;3:C"]data.tag = 数组
容器多选multi(容器)[checkbox n:tag l:标签 multi][opt v:1 tx:A chk][/checkbox]data.tag = 数组
属性含义适用
l标签checkbox
n字段名(多选提交键)checkbox
opt简写选项串(自闭合多选)checkbox
multi标记容器多选模式(需 [/checkbox]checkbox
vinline/verticalcheckbox
chk默认勾选 / 选中checkbox / opt
dis禁用checkbox

多选提交走原生 FormData,同 n 多值自动聚合为数组(如勾选 A、C → data.tag = ["1","3"])。单布尔 / 简写多选是自闭合,不写 [/checkbox];只有 multi 容器多选需要 [/checkbox]

取值按钮位置(写错就拿不到数据):放 form [form id:F sub:H]...[btn tx:提交 clk:H][/form](clk 自动收集所在 form);或放 form 但必须加 form:表单ID 显式绑定 [btn tx:提交 form:F clk:H]。按钮在 form 外、又不写 form:ID → handler 收到 null

1[checkbox l:我已阅读并同意服务条款 n:agree chk]
2[checkbox l:订阅每周精选 n:weekly]
3[checkbox l:禁用且勾选 n:x chk dis]
4[checkbox n:tag l:标签(简写多选) opt:"1:篮球;2:足球;3:羽毛球"]
5[checkbox n:f l:功能(竖排) v:vertical opt:"1:即时通讯;2:会议;3:日历;4:云盘"]
加载 TokUI…
TokUI DSL · 左代码右渲染

开关 switch

自闭合。chk 开启、clk 切换回调。

属性含义示例
l标签l:邮件通知
chk默认开启chk
dis禁用dis
clk切换处理器名clk:onToggle
n字段名n:notify
vv:1
id元素 IDid:notify

变体sm / lg

1[switch l:接收邮件通知 chk]
2[switch l:免打扰模式]
3[switch l:夜间静音 clk:onNight]
4[switch l:小尺寸 chk v:sm]
5[switch l:大尺寸 chk v:lg]
加载 TokUI…
TokUI DSL · 左代码右渲染

滑块 slider

自闭合。min/max/step 区间与步进、v 当前值。

属性含义示例
l标签l:音量
min最小值min:0
max最大值max:100
step步进step:5
v当前值v:60
dis禁用dis
clk拖动回调clk:onSlide
n字段名n:volume
id元素 IDid:volume
range双滑块区间模式range
marks刻度标签(值:标签 逗号分隔)marks:"0:免费,50:标准"

变体sm / lg

1[slider l:音量 v:60 min:0 max:100]
2[slider l:亮度 step:5 v:75]
3[slider l:不透明度 v:30 clk:onOpacity]
4[slider l:禁用 v:50 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

区间与刻度range 双滑块选区间(v:"20,60"),change 上报 {value: [min, max]}marks:"0:免费,50:标准,100:旗舰" 渲染刻度标签。

评分 rate

自闭合。max 星级上限、v 当前分、clk 选择回调。

属性含义示例
l标签l:评分
v当前值v:4
max最大星级max:5
clk选择回调clk:onRate
dis只读/禁用dis
tx文案tx:很好
half半选(0.5 步进,同值再点清零)half
1[rate l:商品评分 v:4 max:5]
2[rate l:服务评分 v:0 max:5 clk:onRate]
3[rate l:只读评分 v:5 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

数字输入 numinput

自闭合。带加减按钮的数字输入,min/max/step 约束范围。

属性含义示例
l标签l:数量
v当前值v:1
min最小值min:1
max最大值max:99
step步进step:1
dis禁用dis
n字段名n:qty
id元素 IDid:qty
1[numinput l:购买数量 v:1 min:1 max:99 step:1]
2[numinput l:时长(小时) v:8 min:0 max:24 step:0.5]
3[numinput l:禁用 v:5 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

按钮组 btngroup

容器,包裹一组 btn。表单场景里常用于多按钮操作区(主要按钮用法见基础组件)。

属性含义示例
id组 IDid:actions
v变体v:vertical

变体vertical(垂直排列)、pill(圆角组)。

1[btngroup]
2 [btn tx:保存 v:primary sub:onSave]
3 [btn tx:取消 v:ghost]
4[/btngroup]
5[btngroup v:vertical]
6 [btn tx:上传 v:primary]
7 [btn tx:下载]
8 [btn tx:删除 v:danger]
9[/btngroup]
加载 TokUI…
TokUI DSL · 左代码右渲染

选择器 picker

容器,比 select 更丰富的选择面板(含搜索/多列)。multi 多选、dis 禁用。

属性含义示例
l标签l:城市
ph占位提示ph:"请选择"
multi多选multi
dis禁用dis
n字段名n:city
vv:bj
id元素 IDid:city

变体error / success

1[picker l:所在城市 ph:"请选择城市"]
2[/picker]
3[picker l:标签(多选) multi ph:"请选择标签"]
4[/picker]
5[picker l:禁用态 ph:不可选择 dis]
6[/picker]
加载 TokUI…
TokUI DSL · 左代码右渲染

级联选择 cascader

容器,逐级展开的多级选择(如省市区)。clk 选择回调。

属性含义示例
l标签l:地区
ph占位提示ph:"请选择"
dis禁用dis
clk选择回调clk:onPick
vv:"北京-朝阳"
n字段名n:region
id元素 IDid:region

变体error / success

1[cascader l:所在地区 ph:"请选择省/市/区"]
2[/cascader]
3[cascader l:商品分类 clk:onCategory]
4[/cascader]
加载 TokUI…
TokUI DSL · 左代码右渲染

文件上传 upload

自闭合。accept 限制类型、multi 多选、max 最大数量。

属性含义示例
l标签l:附件
ph占位提示ph:"点击或拖拽上传"
accept允许类型accept:"image/*"
multi多文件multi
max最大数量max:5
dis禁用dis
clk上传回调clk:onUpload
n字段名n:file
id元素 IDid:file
u上传地址(仅 http(s) / 相对路径,启用自动传输)u:/api/upload
mtd上传方法mtd:post

变体sm / lg

传输层:带 u: 时选择文件后自动经 XHR 逐个上传,文件项呈现进度条 / 成功 ✓ / 失败 ✗+重试三态,并上报 progress {file, percent} / success {file, response} / error {file, error} 事件;不带 u: 仅前端选择(仅 change 事件)。

1[upload l:头像 accept:"image/*" ph:"点击上传头像"]
2[upload l:多文件上传 multi max:5 ph:"支持最多 5 个文件"]
3[upload l:禁用上传 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

服务端可推 [upd id:file act:clear] 清空已选文件列表。

日期选择 datepicker

自闭合。fmt 日期格式、v 默认值、clk 选择回调。

属性含义示例
l标签l:出生日期
ph占位提示ph:"请选择日期"
fmt日期格式fmt:yyyy-MM-dd
v默认值v:2026-06-20
clk选择回调clk:onDate
dis禁用dis
n字段名n:birthday
id元素 IDid:birthday
range范围模式(两次点击选起止)range
1[datepicker l:出生日期 ph:"请选择日期" fmt:yyyy-MM-dd]
2[datepicker l:默认值示例 v:2026-06-20]
3[datepicker l:禁用态 ph:不可选择 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

范围模式range 下两次点击选定起止日期,值格式 YYYY-MM-DD ~ YYYY-MM-DD

时间选择 timepicker

自闭合。fmt 时间格式、v 默认值。

属性含义示例
l标签l:开始时间
ph占位提示ph:"请选择时间"
fmt时间格式fmt:HH:mm
v默认值v:09:30
clk选择回调clk:onTime
dis禁用dis
n字段名n:time
id元素 IDid:time
1[timepicker l:开始时间 ph:"请选择时间" fmt:HH:mm]
2[timepicker l:默认值 v:09:30]
3[timepicker l:禁用态 ph:不可选择 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

日期时间 datetimepicker

自闭合。日期 + 时间合一选择,fmt 自定义格式。

属性含义示例
l标签l:预约时间
ph占位提示ph:"请选择日期时间"
fmt格式fmt:"yyyy-MM-dd HH:mm"
v默认值v:"2026-06-20 09:30"
clk选择回调clk:onDateTime
dis禁用dis
n字段名n:dt
id元素 IDid:dt
1[datetimepicker l:预约时间 ph:"请选择日期时间" fmt:"yyyy-MM-dd HH:mm"]
2[datetimepicker l:默认值 v:"2026-06-20 09:30"]
3[datetimepicker l:禁用态 ph:不可选择 dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

穿梭框 transfer

容器,左右两栏互斥的多选移动。tt/tt2 两侧标题、clk 移动回调。

属性含义示例
l标签l:分配角色
tt左侧标题tt:未选
tt2右侧标题tt2:已选
clk移动回调clk:onTransfer
h固定高度(内容滚动)h:240 / h:40vh
mh最大高度(覆盖默认 320px)mh:200
dis禁用dis
n字段名n:roles
id元素 IDid:roles

变体sm(max 260px)/ lg(max 400px)。默认最大高度 320px,列表超出时内部滚动(滚动条默认透明,hover 显灰色半透明)。

opt 子项填数据:带 chk 的初始在右侧(已分配),其余在左侧(待分配)。勾选后点 / 穿梭。

1[transfer l:角色分配 tt:待分配 tt2:已分配 clk:onTransfer]
2 [opt v:admin tx:系统管理员]
3 [opt v:editor tx:内容编辑 chk]
4 [opt v:viewer tx:只读访客]
5 [opt v:auditor tx:审计员 chk]
6 [opt v:dev tx:开发者]
7[/transfer]
加载 TokUI…
TokUI DSL · 左代码右渲染

h 固定高度、mh 最大高度示例:

1[transfer l:固定高度 h:160 tt: tt2:]
2 [opt v:1 tx:选项一]
3 [opt v:2 tx:选项二 chk]
4 [opt v:3 tx:选项三]
5 [opt v:4 tx:选项四]
6 [opt v:5 tx:选项五 chk]
7 [opt v:6 tx:选项六]
8[/transfer]
9[transfer l:最大高度 mh:140 tt:候选 tt2:已选]
10 [opt v:a tx:短列表A]
11 [opt v:b tx:短列表B chk]
12[/transfer]
加载 TokUI…
TokUI DSL · 左代码右渲染

标签输入 input-tag

回车添加标签、点击标签 × 移除。tags 初始标签、max 最大数量。带 tags 时可自闭合;无 tags[/input-tag] 闭合。

属性含义示例
l标签l:标签
ph占位提示ph:"输入后回车添加"
n字段名n:tags
max最大数量max:8
tags初始标签(逗号分隔)tags:"JS,Python"
dis禁用dis
1[input-tag l:技术栈 ph:"输入后回车添加" max:8 tags:"JavaScript,Python,Go"]
2[input-tag l:极简自闭合 tags:"React,Vue"]
3[input-tag l:空容器 ph:"无初始标签,手动添加"]
4[/input-tag]
5[input-tag l:禁用态 tags:"只读模式" dis]
加载 TokUI…
TokUI DSL · 左代码右渲染

分段控制器 segmented

一组互斥选项的轻量切换(tabs 的表单控件版)。两种写法:opt 简写(原子自闭合)或容器模式 opt 子节点(支持图标、单项禁用)。

属性含义示例
opt选项简写串 v:label;...必须双引号opt:"list:列表;grid:宫格"
v当前选中值(可与形态变体组合)v:"sm,grid"
n字段名n:view
l标签l:视图
dis整组禁用dis
onchange 上报 {value,name}on:"change:h"
id元素 IDid:view

变体sm / lg / block(撑满)/ pill(胶囊)/ vertical(垂直)。

容器模式 opt 子节点(逐项精细控制):

属性含义示例
v选项值v:grid
tx显示文本tx:宫格
i图标字符(emoji/符号)i:📊
chk默认选中(v 命中优先)chk
dis单项禁用dis

服务端可用 [upd id:view v:grid] 程序化切换;form reset 恢复初始值。

1[segmented l:视图 v:grid opt:"list:列表;grid:宫格;table:表格"]
2[segmented v:"pill,day" opt:"day:日;week:周;month:月"]
3[segmented n:perm v:read]
4[opt v:read tx:只读]
5[opt v:write tx:读写]
6[opt v:admin tx:管理员 dis]
7[/segmented]
加载 TokUI…
TokUI DSL · 左代码右渲染

颜色选择 color-picker

自闭合。取色面板含饱和明度取色区 + hue 滑条 + hex 输入 + 预设色 + 清除,presets 配置预设色。面板开启时 portal 到 body 并 fixed 定位,不被父容器 overflow 裁切;滚动时跟随重定位,外点/Esc 关闭。

属性含义示例
v初始色(#rrggbb,缺省 #1677ffv:#1677ff
presets预设色(逗号分隔 hex)presets:"#f5222d,#fa8c16"
n字段名n:color
l标签l:主题色
dis禁用dis
onchange 上报 {value,name}on:"change:h"
id元素 IDid:color

服务端可用 [upd id:color v:#hex] 程序化改色、[upd id:color dis:false] 解除禁用;form reset 恢复初始值。

1[color-picker l:主题色 v:#1677ff presets:"#f5222d,#fa8c16,#52c41a,#1677ff,#722ed1"]
加载 TokUI…
TokUI DSL · 左代码右渲染

行内编辑 editable

自闭合行内元素。文本带虚线下划线标识可编辑,点击进入编辑态:Enter/失焦提交,Esc 还原(不上报)。

属性含义示例
tx / v初始文本tx:小木屋
ph空值占位ph:点击填写
n字段名n:nick
dis禁用dis
on提交(值变化)上报 {value,name}on:"change:h"
id元素 IDid:ed1

服务端可用 [upd id:ed1 tx:新值] 程序化改值(silent)、[upd id:ed1 dis:false] 解锁。

1[p]
2昵称:
3[editable tx:小木屋 n:nick]
4[/p]
5[p]
6签名:
7[editable ph:点击填写 n:sign]
8[/p]
9[p]
10锁定项:
11[editable tx:不可编辑 dis]
12[/p]
加载 TokUI…
TokUI DSL · 左代码右渲染

完整 DSL 语法(属性简写、变体白名单、流式渲染约束等)见 DSL 语法