更新记录

0.2.1(2026-09-28) 下载此版本

  • 修复规则 trigger 不生效(用户反馈:设置 trigger: ['blur', 'change'] 后值已改动,错误提示仍不消失):此前 nax-form 已提供字段校验入口但库内无消费方,nax-form-item 的控件插槽也无法挂载事件,字段级校验只能由业务侧手动调 validateField(prop, event) 触发
  • nax-form-item 新增向插槽内表单控件提供字段级校验入口 naxFormItemValidate(event, value);NaxFormState 新增 validateOneWithValue(prop, event, value)
  • 控件驱动的校验使用控件传入的当前值而非读 model:业务侧 model 多在 @change / @blur 时才同步,读 model 会取到旧值,错误提示依然不消失
  • 公共 validate() / validateField() 仍从 model 取值,快照与重置逻辑不变
  • 全端一致(无条件编译差异):Android / iOS / 鸿蒙 / Web / 小程序行为相同

0.2.0(2026-08-27) 下载此版本

  • 新增 labelSize 标签字号属性:nax-form 表单级统一(空串跟随组件默认 15px),nax-form-item 可单项覆盖(空跟随 form)

0.1.8(2026-08-21) 下载此版本

  • 修复 TypeError: root.getAny is not a function(Web 端用户反馈):对象 props(model / rules / 规则项)在部分场景下不是真实 UTSJSONObject 实例(Web 普通/响应式对象、App 渲染层桥接等),getAny/set 方法丢失导致校验与快照全部失效。
查看更多

平台兼容性

uni-app x(4.25)

Chrome Safari Android iOS 鸿蒙 微信小程序
√ √ √ √ √ √

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
× √ × ×

nax-form

uni-app x 表单 / 表单项,功能覆盖常用场景。

依赖

  • nax-icon(表单项左右图标)
  • nax-ui-theme(CSS 变量 --nax-*,安装时依赖 / 运行时弱依赖)

基础用法

<template>
  <nax-form ref="formRef" :model="form" :rules="rules" label-width="80" error-type="message">
    <nax-form-item label="姓名" prop="name" required>
      <nax-input v-model="form.name" border placeholder="请输入姓名"></nax-input>
    </nax-form-item>
    <nax-form-item label="简介" prop="intro">
      <nax-input v-model="form.intro" border placeholder="请输入简介"></nax-input>
    </nax-form-item>
  </nax-form>
  <nax-button type="primary" label="提交" @click="onSubmit"></nax-button>
</template>

<script setup lang="uts">
const formRef = ref(null)
const form = reactive({
  name: '',
  intro: ''
} as UTSJSONObject)

const rules = {
  name: [
    { required: true, message: '请输入姓名', trigger: ['blur', 'change'] }
  ],
  intro: [
    { min: 3, max: 50, message: '简介 3-50 字' }
  ]
} as UTSJSONObject

function onSubmit() {
  const comp = formRef.value
  if (comp == null) {
    return
  }
  // 通过 defineExpose 暴露的 validate
  comp.validate().then((_ok: boolean) => {
    uni.showToast({ title: '校验通过', icon: 'none' })
  }).catch((_err: any) => {
    // 字段错误已展示
  })
}
</script>

小程序端若对象里的函数规则被过滤,请在 onReady 中调用 setRules(rules)。

规则 trigger 对内置表单控件自动生效:控件在值变化时按 change、失焦时按 blur 触发本项校验,无需业务侧手动调用。已接入的控件:nax-input、nax-textarea、nax-search、nax-number-box、nax-checkbox(含 group)、nax-radio(含 group)、nax-switch、nax-rate、nax-slider、nax-calendar、nax-select、nax-datetime-picker、nax-upload。自定义控件可自行调用 validateField(prop, 'change') / validateField(prop, 'blur')。

nax-form Props

属性 类型 默认 说明
model object {} 表单数据对象
rules object {} 校验规则(字段 → 规则数组)
error-type string message message / toast / border-bottom / none / message-toast
border-bottom boolean true 表单项是否显示下边框
label-position string left left / top
label-width string | number 80 标签宽度(px)
label-align string left left / center / right
label-size string | number '' 标签字号(px);空串跟随组件默认 15
custom-class string '' 根节点扩展 class

nax-form Methods(ref)

方法 说明
validate() 校验全部,返回 Promise<boolean>;失败 reject 错误数组
validateField(props?, event?) 校验指定字段;event 为 blur/change 时按 trigger 过滤
resetFields() 重置为首次注册时的快照并清空错误
clearValidate(props?) 清空校验结果
setRules(rules) 手动设置规则

规则字段(常用)

字段 说明
required 是否必填
type string / number / boolean / integer / float / array / email / url / date 等
message 失败提示
trigger blur / change 或数组
min / max / len 长度或数值范围
pattern 正则源字符串(不要两端斜杠引号)
enum 枚举数组
whitespace 纯空格是否不通过

未内置 validator 异步自定义函数(蒸汽模式 / 小程序传函数限制);复杂逻辑可在提交前自行判断。

nax-form-item Props

属性 类型 默认 说明
label string '' 标签文案
prop string '' 对应 model 字段(校验必填)
rules array [] 本项规则(优先于 form.rules)
required boolean false 仅展示必填星号
border-bottom boolean true 下边框;true 时跟随 form 开关
label-position string '' 覆盖 form
label-width string | number '' 覆盖 form(px)
label-align string '' 覆盖 form
label-size string | number '' 覆盖 form(px);form 空时跟随组件默认 15
left-icon / right-icon string '' nax-icon 名
status string default default / success / warning / error
error-message string '' 外部错误文案(优先展示)
custom-class string '' 根节点扩展 class

插槽

名称 说明
default(form) 放置 form-item
default(item) 表单控件
label(item) 自定义标签

主题

通过 CSS 变量覆盖:

Token 用途
--nax-color-border 边框色
--nax-color-error 错误色
--nax-color-success 成功色
--nax-color-text 主文字色
--nax-color-warning 警告色

平台说明

  • 控件需自行 v-model 绑定到 model 字段;提交时调用 validate()。
  • 内置表单控件的 trigger(blur / change)已自动联动,无需手动调 validateField;自定义控件可自行调用 validateField(prop, 'blur') / validateField(prop, 'change')。
  • 字段级校验按控件当前值判定,不依赖业务侧 model 是否已同步(model 常在 @change / @blur 才写入);validate() 提交校验仍以 model 为准,请在提交前保持 model 与控件值一致。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。