Vue3 Element Plus表单自定义校验实现步骤

一、效果

        

二、实现步骤 

1.导入必要的组件和工具

  • 使用import语句导入Vue3的refuseRouter,Element Plus的FormInstance类型,以及自定义的接口和API。
import { ref } from "vue";
import type { FormInstance } from 'element-plus'
import { useRouter } from "vue-router";
import { IUser2, IRules } from "@/interfaces/userInterface";
import { loginApi } from "@/apis/userApi";
import { User, Lock } from "@element-plus/icons-vue";

2.初始化数据: 

  • 创建ref实例user2,用于存储用户名和密码。
  • 创建ref实例ruleFormRef,用于引用表单实例。
  • 创建ref实例rules,定义表单验证规则,如用户名和密码的长度、格式等。
const $router = useRouter();
const user2 = ref<IUser2>({ account: "", password: "" });
const ruleFormRef = ref<FormInstance>()
const rules = ref<IRules>({
  account: [
    { required: true, message: "请输入用户名", trigger: "blur" },
    { pattern: /^[a-zA-Z0-9]{4,10}$/, message: "用户名包含数字和字母大小写4~10位", trigger: "blur" },
  ],
  password: [
    { required: true, message: "请输入密码", trigger: "blur" },
    { pattern: /^[a-zA-Z0-9!@#$%^&*(),._-]{6,12}$/, message: "密码包含数字和字母大小写,特殊字符6~12位", trigger: "blur" }
  ]
})

3.HTML模板: 

  • 使用el-form组件,设置refruleFormRefmodeluser2rulesrules
  • el-form-item中使用el-input组件,结合v-model双向绑定数据,并设置prop属性与rules中的属性相对应,用于自动验证。
<el-form class="login_form" ref="ruleFormRef" :model="user2" :rules="rules">
   <h1>Hello</h1>
   <h2>欢迎来到白宫甄选</h2>
   <el-form-item class="login_item" prop="account">
       <el-input :prefix-icon="User" placeholder="请输入用户名" v-model="user2.account"> 
       </el-input>
   </el-form-item>
   <el-form-item class="login_item" prop="password">
      <el-input type="password" placeholder="请输入密码" :prefix-icon="Lock"                                   
        v-model="user2.password" show-password></el-input>
   </el-form-item>
   <el-form-item class="login_item">
      <el-button class="login_btn" type="primary" @click="submitForm(ruleFormRef)">登陆 
      </el-button>
   </el-form-item>
</el-form>

4.自定义校验函数

  • 定义submitForm函数,接收表单实例作为参数。
  • 在函数内部,首先调用validate方法对表单进行验证。如果验证通过,调用登录API并处理返回结果。如果验证失败,显示错误通知。
const submitForm = (formEl: FormInstance | undefined) => {
  if (!formEl) return// 如果未定义表单实例,则直接返回,不执行后续操作

  // 验证表单,如果验证通过则调用登录接口
  formEl.validate(async(valid) => {
    if (valid) {
      // 调用登录接口并传入用户信息
      const res = await loginApi(user2.value);
      console.log(res);
      
      // 根据接口返回结果进行相应操作
      if (res.data.code !== 1) {
        ElNotification({
          title: '登陆失败',
          message: '用户名或密码错误',
          type: 'error',
        })
      } else {
        // 登录成功,存储token并跳转到首页
        localStorage.setItem("token", res.data.data.token);
        $router.push("/home");
        ElNotification({
          title: '登陆成功',
          message: '欢迎回来',
          type: 'success',
        })
      }
    } else {
      // 验证未通过,显示错误通知
      ElNotification({
          title: '校验',
          message: '请输入用户名和账号',
          type: 'error',
        })
    }
  })
}

三、单词意思

prop在使用了 validateresetFields 的方法时,该属性是必填的。
required是否为必填项。
message报错提示消息。
trigger验证逻辑的触发方式 ----'blur' | 'change'
blur 失去焦点时进行验证
change 当值发生变化时进行验证
pattern正则表达式,该值必须匹配才能通过验证
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于Vue 3和Element Plus的表单校验,你可以按照以下步骤进行设置: 1. 首先,确保你已经安装了Vue 3和Element Plus,并在你的项目中引入它们。 2. 创建一个Vue组件,在其中定义你的表单。 3. 在data属性中添加一个对象,用于存储表单数据和校验规则。例如: ```javascript data() { return { form: { name: '', email: '' }, rules: { name: [ { required: true, message: '请输入姓名', trigger: 'blur' } ], email: [ { required: true, message: '请输入邮箱地址', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] } ] } } } ``` 在上面的例子中,我们定义了一个表单对象`form`,其中包含了`name`和`email`字段。同时,我们定义了校验规则`rules`,对`name`和`email`字段进行校验。 4. 在模板中使用`el-form`和`el-form-item`标签来渲染表单,并绑定校验规则和错误消息。例如: ```html <el-form :model="form" :rules="rules"> <el-form-item label="姓名" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="邮箱" prop="email"> <el-input v-model="form.email"></el-input> </el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form> ``` 在上面的例子中,我们使用了`prop`属性来指定校验规则的字段名,使用`v-model`指令将表单数据绑定到输入框上。 5. 在组件的方法中,定义一个用于提交表单的方法,并调用`this.$refs.form.validate()`来触发表单校验。例如: ```javascript methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { // 表单校验通过,可以进行提交操作 console.log('表单校验通过'); } else { // 表单校验不通过,进行错误提示 console.log('表单校验不通过'); } }); } } ``` 在上面的例子中,我们使用了`this.$refs.form.validate()`方法来触发表单校验,并在回调函数中判断校验结果。 这样,你就可以使用Vue 3和Element Plus进行表单校验了。根据实际需求,你可以添加更多的校验规则和自定义错误消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值