VUE项目中如何进行表单校验


前言

本文主要讲解Form 表单的必填项校验、正则验证、自定义校验规则和兜底校验

为什么要进行表单校验呢? 如果说用户每次填写完信息都提交给服务器,服务器返回说你的信息填写的格式不正确,又要重新提交一次,又告诉你不正确,这样效率是不是很低呢!这就是表单校验的意义所在!在提交服务器之前全部校验一次!格式正确才让你提交!


一、表单校验的三大要素

(1.)el-form 上的 model 属性
(2.)el-form 上的 rules 属性
(3.)el-form-item 上的 prop 属性
在这里插入图片描述

model负责拿到表单所有项的数据
在这里插入图片描述

rules负责校验规则
在这里插入图片描述

props负责告诉form表单 model里的数据 和 rules 的对应关系,这里注意一个问题,prop的值一定要和校验规则里的值一致,最好prop和v-model和rules里的值三个都一样,这样不容易出错

二、使用步骤

1.定义规则(必填项校验、正则验证)

这里以username用户名的校验为例
在这里插入图片描述
每一项的校验规则都为一个数组,数组里放了多个对象,每个对象代表一个校验规则,
这里的第一个对象代表必填项校验(required),message是提示信息,trigger代表何时触发校验
第二个对象就是正则校验,可以利用pattern自定义规则

在这里插入图片描述

2.自定义校验

为什么需要自定义校验呢?比如用户注册时,输入密码完需要确认密码,这时就需要自定义校验校验看看两者是否一致 这里以确认密码为例讲解

 repassword: [
          // 非空判断
          { required: true, message: '请再次输入密码', trigger: 'blur' },
          { pattern: /^\S{6,15}$/, message: '请输入 6 ~ 15 位的非空字符', trigger: 'blur' },
          // 自定义校验: 两次输入的密码是否一致
          { validator: checkPwd, trigger: 'blur' }
        ]

repassword是确认密码的校验规则,第三个对象里的validator即为自定义校验,checkPwd为触发的自定义校验函数,这个函数的定义需要写在 data数据return的上面,其中参数二就是确认密码填写的值,需要和regForm.password的的值作对比
参数三尤其注意,这个回调函数无论 密码 和确认密码 一不一致都必须调用一次
callback(new Error(‘两次输入的密码不一致’))表示不通过
callback()表示通过

 data() {
    // 参数1: rule 对象, 是校验规则, 一般不用
    // 参数2: value 校验项的数据
    // 参数3: callback 回调函数, 决定是否校验通过
    const checkPwd = (rule, value, callback) => {
      if (value !== this.regForm.password) {
        callback(new Error('两次输入的密码不一致'))
      } else {
        callback()
      }
    }
    return {
      regForm: {
        username: '',
        password: '',
        repassword: ''
      },
      regRules: {
        username: [
          // 非空
          { required: true, message: '请输入用户名', trigger: 'blur' },
          // 用户名必须是 1 ~ 10 位的数字字母, 同时不能以数字开头
          { pattern: /^[a-zA-Z][a-zA-Z0-9]{0,9}$/, message: '请输入 1 ~ 10 位的数字或字母, 不能以数字开头', trigger: 'blur' }
        ],
        password: [
          // 非空
          { required: true, message: '请输入密码', trigger: 'blur' },
          { pattern: /^\S{6,15}$/, message: '请输入 6 ~ 15 位的非空字符', trigger: 'blur' }
        ],
        repassword: [
          // 非空
          { required: true, message: '请再次输入密码', trigger: 'blur' },
          { pattern: /^\S{6,15}$/, message: '请输入 6 ~ 15 位的非空字符', trigger: 'blur' },
          // 自定义校验: 两次输入的密码是否一致
          { validator: checkPwd, trigger: 'blur' }
        ]
      }
    }
  }

在这里插入图片描述

3.兜底校验

为什么要有兜底校验呢? 前面所讲的几种校验方式都是在提醒用户,诶!你这样填有点不对劲啊!但是用户要是很固执,照样提交,你也没办法!
这就需要咱们的兜底校验登场了! 在你提交请求之前,帮你把所有的校验再过一遍,只要有一项校验不通过,那就无法提交申请!

 methods: {
    reg() {
      // validate 方法就是做兜底校验
      // 传入一个回调函数, 回调函数第一个参数就是是否通过的结果
      //如果全部通过了校验,则valid为true,但凡有一项没通过,则valid为false
      this.$refs.regForm.validate(async valid => {
        if (!valid) return
        const { data: res } = await this.$http.post('/api/reg', this.regForm)
        if (res.code !== 0) return this.$message.error(res.message)
        this.$message.success(res.message)
        // 4. 跳转至登录页 /login
        // 编程式导航
        this.$router.push('/login')
      })
    }
  }

创作不易,如果这篇文章有帮助到你的话,给作者点赞加关注吧~

总结

以上就是今天要讲的内容,本文介绍了表单校验的使用,可以让用户获得更好的体验!

  • 33
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
Vue Element Plus 提供了丰富的表单校验功能,可以轻松地对表单进行验证。以下是一个简单的示例,演示如何使用 Vue Element Plus 进行表单校验: 首先,确保你已经安装了 Vue 和 Element Plus,并正确引入它们: ```bash npm install vue npm install element-plus ``` 在 Vue 组件,使用 `el-form` 组件包裹你的表单,并添加 `ref` 属性用于在代码引用表单实例: ```html <template> <el-form :model="form" :rules="rules" ref="myForm"> <!-- 表单项 --> </el-form> </template> ``` 在 `data` 定义表单数据和验证规则: ```javascript data() { return { form: { // 表单数据 }, rules: { // 验证规则 } }; }, ``` 在 `methods` 定义一个提交表单的方法,并在方法调用表单的 `validate()` 方法进行校验: ```javascript methods: { submitForm() { this.$refs.myForm.validate((valid) => { if (valid) { // 校验通过,处理提交逻辑 } else { // 校验不通过,显示错误信息 } }); } } ``` 在模板,为每个表单项添加验证规则: ```html <el-form-item prop="fieldName" label="Field Label"> <el-input v-model="form.fieldName"></el-input> </el-form-item> ``` 其,`prop` 属性指定了表单项对应的字段名,`label` 属性指定了表单项的标签。 以上就是使用 Vue Element Plus 进行表单校验的基本步骤。你可以根据具体需求,添加更多的表单项和验证规则。详细的 API 文档可以参考 Vue Element Plus 的官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端百草阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值