element-ui的表单验证及自定义验证规则

2023-11-04

element-ui是一个组件库 里面有很多项大家都会用到 其中的表单项验证时比较常用的

比如我们一个登录界面有以下的要求

  • 手机号: 必填, 11位移动手机号

  • 验证码: 必填, 6位数字

  • 协议: 必须勾选

<el-form :model="form" :rules="rulesArr">
    <el-form-item prop="mobile">
        <el-input v-model="form.mobile" placeholder="请输入手机号"></el-input>
    </el-form-item>
    <el-form-item prop="code">
        <el-input v-model="form.code" placeholder="请输入手机号"></el-input>
    </el-form-item>
    <el-form-item prop="check">
        <el-checkbox v-model="form.check">我已阅读并同意「用户协议」和「隐私条款」</el-checkbox>
    </el-form-item>
    <el-form-item>
        <el-button type="primary">登 录</el-button>
    </el-form-item>
</el-form>

<script>
export default {
  data () {
    return {
      form: {
        mobile: '',
        code: '',
        check: false
      },
      rulesArr: {
        mobile: [
          { required: true, message: '请输入正确手机号', trigger: 'blur', pattern: /^1[3456789]\d{9}$/ }
        ],
        code: [
          { required: true, message: '验证码是6位数字', trigger: 'change', pattern: /^\d{6}$/ }
        ]
      }
    }
  }
}
</script>

  1. el-form设置:model="form表单对象"

  2. el-form设置:rules="rule规则数组"

  3. el-form-item设置prop="form表单对象的属性名"

  4. 定义rulesArr规则数组里, prop名字对应规则

 rulesArr: {
        mobile: [
          { required: true, message: '请输入正确手机号', trigger: 'blur', pattern: /^1[3456789]\d{9}$/ }
        ],
        code: [
          { required: true, message: '验证码是6位数字', trigger: 'change', pattern: /^\d{6}$/ }
        ]
      }

这几句的意思

required  必填项   message 错误提示    trigger 触发判断条件(blur 失去焦点)(change 发生改变)

pattern 正则判断

而我们的判断是否阅读协议 需要自己定一个判断条件 那么就涉及到了

自定义校验

// 检验复选框
const checkValidator = (rule, value, callback) => {
  // rule规则对象
  // value关联表单值
  // callback() 回传结果
  if (value === false) {
    callback(new Error('请勾选协议'))
  } else {
    callback()
  }
}
// 为何不在methods里定义: 因为data初始化时, this还没实例化, 无法访问this.methods里方法
export default {
  data () {
    return {
      form: {
        mobile: '',
        code: '',
        check: false
      },
      rulesArr: {
        // ...其他省略
        check: [
          { validator: checkValidator }
        ]
      }
    }
  }
}

这样就可以简单的判断  表单的 复选框是否点击  如果 为false   就回弹一个 请勾选协议的提醒

如果正确 那么 callback()会继续进行下一项

 如果必填项的话 他还会在 左侧提示一个小小的红色*  提高用户体验~

那么 还有一个小问题 如果 你在登陆界面 没有输入内容 直接点击登陆按钮 也是可以直接进入页面 

那么我们如何做到 在没有任何输入情况点击登陆时候 判断表单规则呢?

 

在这里赋予ref=''form'属性

然后在 

给一个 submitFn的函数

 submitFn () {
      // this.$refs.form 为了获取 el-form 组件标签对象(整个表单对象)
      // validate() 是form表单对象内置的 会触发表单内所有的校验规则执行一遍
      // 校验完毕后 会回调函数体执行 valid变量接到校验最终结果
      // 只要有一个没通过 那么 valid直接为false
      this.$refs.form.validate((valid) => {
        // 有一项没通过表单校验规则, valid就为false
        if (valid) {
          alert('submit!')
        } else {
          console.log('error submit!!')
          return false
        }
      })
    }

 这样我们点击的时候 他会触发这个函数   然后判断 这个表单的表单规则 如果有一项没有达成 那么就会 返回false  然后 走入else分支  打印error submit!!!!

如果想要提示弹窗 那么就自己加好了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element-ui的表单验证及自定义验证规则 的相关文章

随机推荐

  • virt-install: 未找到命令...

    root localhost t virt install bash virt install 未找到命令 yum install libguestfs tools yum install virt install noarch
  • blender简单骨骼绑定

    blender2 90 1 设置3D游标 shift 鼠标右键设置到想要的位置 或者设置到原点 shift s gt Cursor to world origin 或者shift c 2 创建测试的物体 一个长方形 shift a mesh
  • 《UnityAPI.AnimatorStateInfo动画器状态信息》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+IsName+IsTag+tag+立钻哥哥++OK++)

    UnityAPI AnimatorStateInfo动画器状态信息 版本 作者 参与者 完成日期 备注 UnityAPI AnimatorStateInfo V01 1 0 严立钻 2020 07 02 UnityAPI AnimatorS
  • 数据结构-链栈的c++实现

    pragma once ifndef My Head H define My Head H include G code c myhead h endif My Head H template
  • 远心镜头的区别

    文章预览 前言 Introduction 物方远心镜头 Object Space Telecentric 像方远心镜头 Image Space Telecentric 双侧远心镜头 Bi Telecentric 总结 Summary 前言
  • Python VTK 球体贴图代码详解(二)

    效果 继昨天的柱体代码学习 之后尝试了一把球体并进行贴图 效果如下 代码 代码是在昨天柱体基础上修改成球体 并针对球体贴图多了两步 import vtk 柱体 生成一个球体 sphere vtk vtkSphereSource 半径 sph
  • 主动运维管理摆脱“救火式”运维局面

    云呐运维管理模块是以服务目录的形式提供IT服务的交付 用户可点击服务目录中的服务 创建请求流程 通过服务门户汇总所有服务请求 事件 问题 变更记录 分派服务任务 监督执行情况全面管控事件的生命周期 支持事件升级策略定义 提高运维人员的效率
  • Linux 中宝塔面板的 tomcat 重启弹窗一闪而过,但是并未启动tomcat的问题

    这几天不知道是项目出错的原因还是其他因素 我在部署项目的时候 好像在宝塔的tomcat管理界面 点击了停止 我本想暂停tomcat服务 之后想再次开启的时候 tomcat 的重启按钮 一点 基本就是瞬间成功 这肯定有问题 一般来说tomca
  • 高校软件工程期末复习——ICONIX

    ch01 软件工程危机 定义 软件在开发和维护过程中遇到的一系列严重的问题 含义 如何开发软件 如何维护数量不断膨胀的已有软件 原因 客户对软件需求的描述不精确 可能有遗漏 有二义性 有错误 在软件开发过程中 用户提出修改软件功能 界面 支
  • Cookie和Session是什么?它们的区别是什么?

    什么是Cookie Cookie实际上是一小段的文本信息 客户端请求服务器 如果服务器需要记录该用户状态 就使用response向客户端浏览器颁发一个Cookie 客户端会把Cookie保存起来 当浏览器再请求该网站时 浏览器把请求的网址连
  • 谷歌浏览器报错:NET::ERR_CERT_AUTHORITY_INVALID

    chrome net internals hsts
  • Vivado使用心得(六)Vivado ILA观察信号和调试过程

    先简单介绍一下ILA Integrated Logic Analyzer 生成方法 这里有两种办法完成Debug Core的配置和实现 方法一 mark debug综合选项 Set Up Debug设定ILA参数 1 在信号 reg或者wi
  • MV-YOLO翻译(2018年5月 CVPR论文)【原创】

    声明 作者翻译论文仅为学习 如有侵权请联系作者删除博文 谢谢 另 如有不当的地方 请各位大佬批评指正 谢谢 MV YOLO 通过语义目标检测实现运动矢量跟踪 原论文pdf下载地址 https arxiv org pdf 1805 00107
  • office2010 错误1706 解决办法

    office2010 错误1706 解决办法 问题描述 1 弹窗 无限弹窗 无限 困扰了我大概半年的问题 自从上次不小心删掉一些有关office2010的东西 导致网页中下载东西后总是弹窗 office2010 卸载出现 安装程序找不到Pr
  • 以太坊微支付通道原理与实现

    以太坊微支付通道原理与实现 线上直接转账需要一定的费用 如果存在大量小额交易的情况下 费用会变的难以承受 因而以太坊引入了微交易支付通道来解决这个问题 以太坊提供了一个票据支付方案 主要依赖于智能合约实现的一对多的账单系统 该账单系统大致上
  • 【超级无敌详细的韩顺平java笔记】从入门到精通---基本数据类型的转换

    1 自动类型转换 当Java程序在进行赋值或运算时 精度小的类型自动转换为精度大的数据类型 这个就是自动类型转换 数据类型按照精度 容量 大小排序为 注意和细节 1 有多种类型的数据混合运算时 系统首先自动将所有数据转换成容量最大的那种数据
  • kafka 配置部署

    本文以部署三台kafka broker 为例讲解 kafka版本为 kafka 2 9 2 0 8 1 1 运行环境为centos jdk版本为1 7以上 kafka依赖zookeeper 部署之前部署好zookeeper集群 1 获取ka
  • Linux中操作sqlite3、sqlite3数据c/c++接口编程与Windows和Linux中sqlite3库的制作(SQLite二)

    目录 一 linux操作sqlite3 1 可以像window下通过qtcreator编译 2 可以用gcc直接编译 1 要安装libreadline dev 2 在工程文件中添加 3 打开shell c 在最前面添加一行代码 3 直接用U
  • .net线程同步

    大家都晓得 NET中线程同步有以下几种方式 临界区 Critical Section 互斥量 Mutex 信号量 Semaphore 事件 Event 1 临界区 通过对多线程的串行化来访问公共资源或一段代码 速度快 适合控制数据访问 在任
  • element-ui的表单验证及自定义验证规则

    element ui是一个组件库 里面有很多项大家都会用到 其中的表单项验证时比较常用的 比如我们一个登录界面有以下的要求 手机号 必填 11位移动手机号 验证码 必填 6位数字 协议 必须勾选