element-ui的表单校验;el-form表单校验;el-form表单自定义校验;手机号校验;车牌号校验;车牌号正则校验;手动校验表单某一项;手动清空表单的某一项校验结果

示例:代码在末尾 可以直接复制使用
在这里插入图片描述

一、基本属性认知:

1. required: true 会有 * , 但仅是触发最后点击提交按钮时,校验某一项位必填;与输入事件或者选择或者失焦时候 怎么校验无关 (这时候的校验取决于是否写了具体的校验规则)
为false则提交时可不填(默认false) 但是同时取决于validator的callback()返回是空还是返回报错提示
在这里插入图片描述

2. validator: 自定义校验方法 需要声明变量和错误提示
3. trigger: 触发校验方法
4. message: 错误提示
5.type:校验的数据类型
在这里插入图片描述

6.自定义校验方法 var isMobile = (rule, value, callback) => { }
return callback(new Error(‘错误提示信息’))
callback() 透过校验

在这里插入图片描述

7.手动代码校验某一项表单,或者手动代码清空某一项表单的校验结果
this.$refs[‘ruleFormName’].validateField(‘name’) //检验name这一项表单

this.$refs[‘ruleFormName’].clearValidate(‘name’)//清空name的校验结果
在这里插入图片描述

以下代码可直接复制使用:

<template><div class="big_box"><div>采用 <a href="https://element.eleme.cn/#/zh-CN/component/form ">自定义校验规则和表单验证 案例</a> </div><el-form ref="formObj" :model="formObj" :status-icon="false" :rules="rules" label-width="100px" class="demo-ruleForm"><!-- :status-icon="false"  可以去除校验后的对错图标 --><el-form-item label="活动名称" prop="userName"><el-input v-model="formObj.userName" placeholder="required: true 加* 仅触发点击提交时必填,如不设置,则会根据校验规则自动生成"></el-input></el-form-item><el-form-item prop="mobile" label="手机"><el-input v-model="formObj.mobile" placeholder="手机号可不填写 但若填写会校验" maxlength="11" clearable></el-input></el-form-item><el-form-item prop="address" label="地址"><el-input v-model="formObj.address" placeholder="不校验可以不写校验规则{ } 或者写required: false 表示点击提交不校验是否填写" clearable></el-input></el-form-item><el-form-item label="密码" prop="pass"><el-input v-model="formObj.pass" type="password"></el-input></el-form-item><el-form-item label="确认密码" prop="checkPass"><el-input v-model="formObj.checkPass" type="password"></el-input></el-form-item><el-form-item label="年龄" prop="age"><el-input v-model.number="formObj.age"></el-input></el-form-item><el-form-item label="车牌号码" prop="carId"><el-input v-model.number="formObj.carId" placeholder="车牌号码可不填写 填写检验格式 京AAAAAA  京A9999警 自动转换大小写和I O" @change="changeCar"></el-input></el-form-item><el-form-item label="活动区域" prop="region"><el-select v-model="formObj.region" style="width:100%;" clearable placeholder="请选择活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item><el-form-item label="活动性质" prop="sport"><el-checkbox-group v-model="formObj.sport"><el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox><el-checkbox label="地推活动" name="type"></el-checkbox><el-checkbox label="单纯品牌曝光" name="type"></el-checkbox></el-checkbox-group></el-form-item><el-form-item><el-button type="primary" @click="submitForm('formObj')">提交</el-button><el-button @click="resetForm('formObj')">重置</el-button></el-form-item></el-form></div>
</template><script>
export default {data () {var isMobile = (rule, value, callback) => {if (!value) {// return callback(new Error('请输入电话号码'))//这个是必须填写callback()// 这个是可 不填写} else {const reg = /^\d{11}$/const isPhone = reg.test(value)value = Number(value) // 转换为数字if (typeof value === 'number' && !isNaN(value)) {// 判断是否为数字value = value.toString() // 转换成字符串if (value.length < 0 || value.length > 12 || !isPhone) {// 判断是否为11位手机号callback(new Error('请输入11位手机号码'))} else {callback()}} else {callback(new Error('请输入正确手机号码'))}}}var validatePass = (rule, value, callback) => {if (value === '') {callback(new Error('请输入密码'))} else {if (this.formObj.checkPass !== '') {// 触发部分表单字段进行校验的方法 例如通过 密码pass 失焦 来触发检验 确认密码checkPass 的校验this.$refs.formObj.validateField('checkPass')}callback()}}var validatePass2 = (rule, value, callback) => {if (value === '') {callback(new Error('请再次输入密码'))} else if (value !== this.formObj.pass) {callback(new Error('两次输入密码不一致!'))} else {callback()}}var checkAge = (rule, value, callback) => {if (!value) {return callback(new Error('年龄不能为空')) // 打开这个就是必填// callback()// 打开这个就是非必填}setTimeout(() => {if (!Number.isInteger(value)) {callback(new Error('请输入数字值'))} else {if (value < 18) {callback(new Error('必须年满18岁'))} else {callback()}}}, 10)}var checkCar = (rule, value, callback) => {if (!value) {return callback()} else {var result = falseif (value.length === 7) {// 车牌是7位时候规则为: 省份简称或大写字母共1位+大写字母共1位+大写字母或者数字共4位+大写字母或数字或特殊汉字1位  例如:AAAAAAA  京A9999警var express = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/result = express.test(value) // 满足条件时候 正则结果是true} else if (value.length === 8) {// 8位的为新能源汽车规则var express2 = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{5}[A-Z0-9挂学警港澳]{1}$/// var express3 = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))$/// 查看新能源车的具体规则其实需要用到express3匹配更精准 https://blog.csdn.net/tangjili5620/article/details/77159453result = express2.test(value)}if (result) {callback()} else {callback(new Error('请输入正确车牌号码'))}return result}}return {formObj: {userName: '',mobile: '',address: '',pass: '',checkPass: '',age: '',carId: '',region: '',sport: []},rules: {// required: true 会有* 仅触发点击提交时必填  为false则提交时可不填(默认false)  但是同时取决于validator的callback()返回是空还是返回报错提示(例如 checkAge )// 与输入事件或者选择或者失焦时候 怎么校验无关 (这时候的校验取决于是否写了具体的校验规则)userName: [{ required: true, message: '请输入活动名称', trigger: 'blur' },{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }],mobile: [{ validator: isMobile, trigger: 'blur' }], // validator 自定义校验方法address: [{}], // 地址不校验可以不写 或者写required: false 表示点击提交不校验是否填写pass: [{ validator: validatePass, trigger: 'blur' }],checkPass: [{ validator: validatePass2, trigger: 'blur' }],age: [{ validator: checkAge, trigger: 'blur' }],carId: [{ validator: checkCar, trigger: 'change' }],region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],sport: [{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }]// 校验的字段类型}}},methods: {// 将车牌输入的小写改成大写 车牌的I和O改成1和0changeCar (val) {let str = val.toUpperCase().replace(/I/g, '1').replace(/O/g, '0')this.formObj.carId = str},submitForm (formName) {this.$refs[formName].validate((valid) => {if (valid) {alert('submit!')} else {console.log('error submit!!')return false}})},resetForm (formName) {this.$refs[formName].resetFields()}}
}
</script>
<style lang="less" scope>
.big_box {width: 100%;.demo-ruleForm {width: 700px;margin-left: -webkit-calc(~'50vw - 350px');margin-left: -moz-calc(~'50vw - 350px');margin-left: calc(~'50vw - 350px');.el-checkbox-group {text-align: left;}}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse For JavaSE安装、配置、测试

Eclipse For JavaSE安装、配置、测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试 5.ADT安装与Android开发测试 6.注意事项 7.相关博文 >>看不清的图片可在新标签打开查看大图 1.概述 eclipse应该是Java开发界家喻户晓的IDE了&#xff0c;通…

epoll的两种模式

From: http://haoningabc.iteye.com/blog/1432958 linux异步IO浅析 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生…

关闭eslint检验;vue-cli3搭建的vue项目关闭eslint;脚手架3关闭eslint;

本文是解决关闭eslint的问题&#xff1b;如果想要开启eslint和配置&#xff0c;可以查看这篇开启eslint检验&#xff1b; 我们使用vue-cli3脚手架搭建vue项目时候&#xff0c;会默认选中eslint风格代码&#xff1b;如果想要关闭eslint检验&#xff0c;有如下两种方案&#xff…

转一篇关于并发和并行概念的好文,附带大神评论

转自&#xff1a;https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/ 还在疑惑并发和并行&#xff1f; OK&#xff0c;如果你还在为并发&#xff08;concurrency&#xff09;和并行&#xff08;parallesim&#xff09;这两个词的区别而感到困扰&#xff0c;那…

MySQL索引背后的数据结构及算法原理-转

转 http://www.codinglabs.org/html/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象&#xff0c;讨论与数据库索引相关的一些话题。特别需要说明的是&#xff0c;MySQL支持诸多存储引擎&#xff0c;而各种存储引擎对索引的支持也各不相同&#xff0c;因此MySQL…

vue项目通过directives指令实现vue实现盒子的移动;vue拖拽盒子;vue移动;

vue项目&#xff1a;点击拖拽盒子&#xff1b;移动盒子&#xff1b; 代码可直接复制&#xff1a;&#xff08;注意需要在移动的盒子上添加 v-指令 注意采用固定定位&#xff09; <template><div class"far_box"><div>{{ msg }}</div><!-…

SuperAgent 中文乱码星号问号问题

看到星号问号了么&#xff0c;SuperAgent 爬取时中文乱码星号&#xff0c;只有中文是乱码&#xff0c;其它都是对的&#xff0c;肯定需要转义&#xff0c;找了两个小时&#xff0c;最后度娘看到个帖子 https://cloud.tencent.com/developer/article/1445392试了试&#xff0c;…

制作 Windows8   to Go

制作 Windows to Go 将准备好的 Windows 8 的镜像文件&#xff08;ISO 格式&#xff09;加载到虚拟光驱中去&#xff1b;将准备好的 USB 存储设备插入&#xff1b;打开控制面板&#xff0c;点击“Windows To Go”&#xff1b;在接下来的选项中按照步骤提示选择对应的 Win 8 的镜…

vue监听浏览器刷新和关闭;

注意&#xff1a;区分不了浏览器是触发了刷新还是关闭&#xff0c;而且提示的弹框是无法自定义的&#xff1b;如果有大佬有方法能区分&#xff0c;还请评论学习一下&#xff01;感谢&#xff01; 代码可直接复制&#xff1a; <template><div><div /></di…

计算文件的md5;vue计算文件md5值;计算图片的md5值;

github链接 1.先下载 npm i browser-md5-file -S2.在使用的vue页面引入和声明方法 import BMF from browser-md5-file const bmf new BMF()3.使用方法&#xff1a; function handle(e) {const file e.target.files[0];bmf.md5(file,(err, md5) > {console.log(err:, err);…

【转】【天道酬勤】 腾讯、百度、网易游戏、华为Offer及笔经面经

面试完毕&#xff0c;已跟网易游戏签约。遂敲一份笔经面经&#xff0c;记录下面试经过。类似于用日记记录自己&#xff0c;同时希望对师弟师妹有一定帮助。不是炫耀&#xff0c;只是希望攒RP&#xff0c;希望各位不要鄙视我。正所谓“饮水思源”。小弟来自广州华南理工大学&…

⭐️ vue项目使用微信表情;vue引入微信表情emoji;vue中使用微信表情包emoji;

以下的表情是通过引入emoji-vue插件做的&#xff1b;如果只是简单的显示个别表情&#xff0c;其实还可以用html的emoji的标签来完成 &#x1f61d;&#x1f64a;&#x1f47f;&#x1f525;&#x1f335;&#x1f344;&#x1f349;&#x1f1e8;&#x1f1f3;&#x1f61a;&am…

奈奎斯特采样定理:

&#xff08;1&#xff09;奈奎斯特采样定理&#xff1a; 当采样频率fs.max大于信号中最高频率fmax的2倍时&#xff0c;即&#xff1a;fs.max>2fmax,则采样之后的数字信号完整地保留了原始信号中的信息&#xff1b; 转载于:https://www.cnblogs.com/jocobHerbertPage/archiv…

vue项目引入字体图标iconfont

直接将icon下载成图片使用或者通过import方式移入url使用&#xff0c;看此篇 本文介绍两种使用方案&#xff1a;1.使用Font class引入字体图标&#xff08;推荐&#xff09; 2.使用Symbol 引用 如果是分批次的下载了好几次字体图标&#xff0c;那么可以将解压的代码css等文件放…

Why is processing a sorted array faster than an unsorted array?

这是我在逛 Stack Overflow 时遇见的一个高分问题&#xff1a;Why is processing a sorted array faster than an unsorted array?&#xff0c;我觉得这是一个非常好的用来讲分支预测&#xff08;Branch Prediction&#xff09;的例子&#xff0c;分享给大家看看 一、问题引入…

uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权

需求&#xff1a;点击按钮获取当前微信位置&#xff0c;以及点击拒绝授权后&#xff0c;下次点击还可以拉起授权窗口&#xff1b; 拒绝授权后重新拉起授权操作&#xff1a; 直接授权操作&#xff1a; 一、问题1&#xff1a;报authorize scope.userLocation需要在app.json中声明…

PHP代码审计之反序列化攻击链CVE-2019-6340漏洞研究

关键词 php 反序列化 cms Drupal CVE-2019-6340 DrupalKernel 前言 简简单单介绍下php的反序列化漏洞 php反序列化漏洞简单示例 来看一段简单的php反序列化示例 <?phpclass pingTest {public $ipAddress "127.0.0.1";public $isValid False;public $output…

Portal-Basic Java Web 应用开发框架:应用篇(八) —— 整合 Freemarker

Portal-Basic Java Web应用开发框架&#xff08;简称 Portal-Basic&#xff09;是一套功能完备的高性能Full-Stack Web应用开发框架&#xff0c;内置稳定高效的MVC基础架构和DAO框架&#xff08;已内置Hibernate、MyBatis和JDBC支持&#xff09;&#xff0c;集成 Action拦截、F…

日常遇到的小问题

日常开发过程中&#xff0c;总会遇到各种小问题&#xff0c;特此记录下各种解决。 1. eclipse中部署项目到tomcat&#xff0c;启动tomcat时报错&#xff1a;  Resource is out of sync with the file system: ................ 太长只截取前一段&#xff0c;解决办法&#xff…

微信小程序,用户拒绝授权后重新授权;uni-app小程序,用户拒绝授权后点击无效;重新进入后拉起位置授权框;

问题&#xff1a;当用户第一次进入小程序&#xff0c;点击授权按钮后&#xff0c;点了拒绝&#xff0c;再次点击不会出现授权页面&#xff0c;只有再次进入小程序的时候&#xff0c;才会出发请求授权 。 案例&#xff1a; 假如我们获取微信位置&#xff0c;第一次点击的时候弹起…