vue3 表单校验大全,含对象嵌套对象验证、数组格式验证、动态添加验证等

时间:2025-03-29 18:49:42
  • <template>
  • <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules">
  • <el-form-item label="手机号" prop="mobile">
  • <el-input v-model="" />
  • </el-form-item>
  • <el-form-item label="密码" prop="pass">
  • <el-input v-model="" type="password" />
  • </el-form-item>
  • <el-form-item>
  • <el-button type="primary" @click="submitForm(ruleFormRef)">提交</el-button>
  • </el-form-item>
  • </el-form>
  • </template>
  • <script lang="ts" setup>
  • import { reactive, ref } from "vue";
  • import type { FormInstance, FormRules } from "element-plus";
  • const phoneRegular = /^1[23456789]\d{9}$/;
  • const ruleFormRef = ref<FormInstance>();
  • const ruleForm = reactive({
  • mobile: "",
  • pass: "",
  • });
  • function customMobile(_: any, value: any, callback: any) {
  • if ((value)) callback();
  • else callback(new Error("请输入正确的手机号"));
  • }
  • const rules = reactive<FormRules<typeof ruleForm>>({
  • mobile: [
  • { required: true, message: "请输入手机号", trigger: ["blur", "change"] },
  • // 正则
  • { pattern: phoneRegular, message: "请输入正确的手机号", trigger: ["blur", "change"] },
  • // 自定义验证
  • { validator: customMobile, trigger: ["blur", "change"] },
  • ],
  • pass: [{ required: true, message: "请输入密码", trigger: ["blur", "change"] }],
  • });
  • const submitForm = (formEl: FormInstance | undefined) => {
  • if (!formEl) return;
  • ((valid) => {
  • if (valid) {
  • ("submit!");
  • } else {
  • ("error submit!");
  • return false;
  • }
  • });
  • };
  • </script>