Skip to content

Form 表单

数据采集与统一表单校验容器,支持数据绑定 model、规则集 rules、手机号/邮箱/身份证内置正则表达式校验、validate() 异步校验与 resetFields() 字段重置。


代码示例

1. 基础用法与校验规则 (Basic Form & Rules)

通过 ref 绑定 <mu-form> 引用,使用 validate() 方法触发异步校验。

vue
<template>
  <mu-form ref="formRef" :model="formData" :rules="formRules">
    <mu-input
      v-model="formData.username"
      label="用户名"
      required
      placeholder="请输入用户名"
    />
    <mu-input
      v-model="formData.phone"
      type="tel"
      label="手机号码"
      required
      phone-prefix
      placeholder="请输入手机号"
    />
    
    <mu-button type="primary" block @click="handleSubmit">提交表单</mu-button>
  </mu-form>
</template>

<script setup>
import { ref, reactive } from 'vue'

const formRef = ref(null)
const formData = reactive({
  username: '',
  phone: ''
})

const formRules = {
  username: [
    { required: true, message: '请输入用户名' },
    { min: 3, message: '用户名至少需要 3 位字符' }
  ],
  phone: [
    { required: true, message: '请输入手机号码' },
    { type: 'phone', message: '手机号码格式不正确' }
  ]
}

const handleSubmit = async () => {
  const valid = await formRef.value.validate()
  if (valid) {
    console.log('校验成功, 表单数据为:', formData)
  }
}
</script>

校验规则类型说明 (Rule Options)

每一个字段对应的规则数组包含以下属性配置:

属性说明类型
required是否必填Boolean
message校验不通过时的提示文案String
type内置常见格式正则 (phone | email | idcard | url)String
min最小输入字符长度Number
max最大输入字符长度Number
pattern自定义正则表达式RegExp
validator自定义校验函数 (value, model) => Boolean | StringFunction

API 属性说明 (Props)

参数名说明类型可选值默认值
model表单数据绑定对象Object-{}
rules表单校验规则定义集合Object-{}
labelWidth全局统一 Label 标题宽度String-'160rpx'
labelPosition全局统一标题位置Stringleft | top'left'
disabled是否全局禁用整个表单Booleantrue | falsefalse
showMessage校验失败时是否自动弹出错误提示 ToastBooleantrue | falsetrue

组件方法说明 (Methods)

方法名说明参数返回值
validate校验整个表单所有字段(callback?: Function)Promise<Boolean>
validateField校验某个具体字段名(fieldName: String){ isValid, error }
resetFields重置所有表单绑定的字段数据--

插槽说明 (Slots)

插槽名说明
default表单项 (Input, Select 等) 容器插槽

基于 MIT 协议开源发行

H5 模拟器 (form)☀️🔄