更新记录

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 方法丢失导致校验与快照全部失效。

0.1.7(2026-08-18) 下载此版本

  • 蒸汽模式(VUE3-VAPOR)兼容修复:nax-form-item__label-wrap--top 的下级选择器规则用 #ifndef VUE3-VAPOR 条件编译隔离,消除 "Invalid selector" 警告;VDOM/Web/小程序行为不变
查看更多

平台兼容性

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)

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?) 校验指定字段;eventblur/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()
  • 字段事件触发(blur/change)需业务侧调用 validateField(prop, 'blur')

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。