<el-form
:model="ruleForm"
:rules="rules"

ref="ruleForm"
label-width="100px"
labelPosition="top"
:inline="true"
class="demo-ruleForm"
>
<el-row :gutter="">
<el-col :span="">
<el-form-item :label="$t('joinUs.surname')" prop="surname">
<el-input class="edit-input" v-model="ruleForm.surname"></el-input>
</el-form-item>
</el-col>
<el-col :span="">
<el-form-item :label="$t('joinUs.givenName')" prop="givenName">
<el-input class="edit-input" v-model="ruleForm.givenName"></el-input>
</el-form-item>
</el-col>
</el-row> <el-row :gutter="">
<el-col :span="">
<el-form-item :label="$t('joinUs.email')" prop="email">
<el-input class="edit-input" v-model="ruleForm.email"></el-input>
</el-form-item>
</el-col>
<el-col :span="">
<el-form-item :label="$t('joinUs.phone')" prop="phoneNumber" required>
<el-row class="edit-tel">
<el-col :span="">
<el-input class="edit-tel1" v-model="phone1"></el-input>
</el-col>
<el-col class="line" :span="">—</el-col>
<el-col :span="">
<el-input class="edit-tel2" v-model="phone2"></el-input>
</el-col>
</el-row>
</el-form-item>
</el-col>
</el-row>
</el-form>

需求:
必填:

surname  givenName  email  phoneNumber

正则:

surname  只允许输入英文
givenName  只允许输入中文
phoneNumber  只允许输入1-20个数字,
email  邮箱
data () {
return {
ruleForm: {
surname: "",
givenName: "",
email: "",
phoneNumber: ""
}
phone1: "",
phone2: ""
}
}

由于国际化问题,切换时在 data 中不起作用,需要将表达式放到 computed 属性中

computed: {
rules () {
var validateSurnmae = (rule, value, callback) => {
let reg = /^[A-Za-z]+$/
if (!reg.test(value)) {
callback(new Error(this.$t('joinUs.surnameErr3')))
} else {
callback()
}
};
var validateGivenName = (rule, value, callback) => {
let reg = /^[\u4e00-\u9fa5]+$/
if (!reg.test(value)) {
callback(new Error(this.$t('joinUs.givenNameErr3')))
} else {
callback()
}
};return {
surname: [
{ required: true, message: this.$t('joinUs.surnameErr1'), trigger: "blur" },
{ validator: validateSurnmae, trigger: "blur" },
{ min: , max: 2, message: this.$t('joinUs.surnameErr2'), trigger: "blur" }
],
givenName: [
{ required: true, message: this.$t('joinUs.givenNameErr1'), trigger: "blur" },
{ validator: validateGivenName, trigger: "blur" },
{ min: , max: 2, message: this.$t('joinUs.givenNameErr2'), trigger: "blur" }
]
email: [
{ required: true, message: this.$t('joinUs.emailError'), trigger: "blur" },
{
type: "email",
message: this.$t('joinUs.emailError'),
trigger: ["blur", "change"]
}
],
phoneNumber: [
{ required: true, message: this.$t('joinUs.phoneNumberError1'), trigger: "blur" },
{ type: 'number', message: this.$t('joinUs.phoneNumberError2'), trigger: "blur" }
]
}
}
}

因为项目需要,现在的 tel 电话 是加区号的

所以写成了上面那种形式,

两个框的单独的,然后用watch监听输入框,把两个框的内容拼接

watch: {
'phone1': function (val) {
this.ruleForm.phoneNumber = parseInt(val + this.phone2)
},
'phone2': function (val) {
this.ruleForm.phoneNumber = parseInt(this.phone1 + val)
}
},

这样就得到了总的电话号码。然后去给总的号码添加校验规则

OK!

关于element-ui表单验证(自定义验证规则)的更多相关文章

  1. 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题

        方法使用前需了解: 来自”和“小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查该form上添加 ...

  2. vue踩坑:vue+ element ui 表单验证有值但验证失败。

    一.如图:有值但是验证失败 二. <el-form :model="form" :rules="rules"> <el-form-item l ...

  3. Angular11 模板表单、响应式表单(自定义验证器)、HTTP、表单元素双向绑定

    1 模板表单 模型通过指令隐式创建 技巧01:需要在模块级别引入 FormsModule ,通常在共享模块中引入再导出,然后在需要用到 FormsModule 的模块中导入共享模块就可以啦 impor ...

  4. easyui 表单和自定义验证扩展和js自定义返回值

    ================jsp==========================<form  method="post" id="regfrminp&qu ...

  5. iview表单密码自定义验证

    From中定义   ref="passwordForm" 获取dom节点  :model="passwordForm" 关联表单数据对象 :rules=&quo ...

  6. vue开源Element UI表单设计及代码生成器

    在日常的开发工作中,表单开发是较为繁琐且重复的.本文介绍一个我自己写的,提高开发效率的小工具. 1 可视化设计器 设计器基于Element UI ,可通过点击或拖拽的方式设计基本表单, 设计器生成的代 ...

  7. (vue.js)element ui 表单重置

    el-form需要接收一个model,并且需要配合el-form-item一起使用,并且在el-form-item上绑定prop属性,resetField方法才能好使. <el-form :mo ...

  8. vue+element 动态表单验证

    公司最近的项目有个添加动态表单的需求,总结一下我在表单验证上遇到的一些坑. 如图是功能的需求,这个功能挺好实现的,但是表单验证真是耗费了我一些功夫. vue+element在表单验证上有一些限制,必须 ...

  9. 如何在.Net Core MVC中为动态表单开启客户端验证

    非Core中的请参照: MVC的验证 jquery.validate.unobtrusive mvc验证jquery.unobtrusive-ajax 参照向动态表单增加验证 页面引入相关JS: &l ...

  10. 第一百八十六节,jQuery,验证表单插件,Ajax 表单插件,验证和提交表单

    jQuery,验证表单插件,Ajax 表单插件,验证和提交表单 HTML <form id="reg" method="post" action=&quo ...

随机推荐

  1. debian apt sources

    deb http://debian.csie.ntu.edu.tw/debian/ sid main contrib non-free deb-src http://debian.csie.ntu.e ...

  2. Fiddle Proxy

    1.抓包原理 Fiddler是类似代理服务器的形式工作,它能够记录所有你的电脑和互联网之间的http(S)通讯,可以查看.修改所有的“进出”的数据.使用代理地址:127.0.0.1, 默认端口:888 ...

  3. 【AGC030F】Permutation and Minimum DP

    题目大意 有一个长度为序列 \(a\),其中某些位置的值是 \(-1\). 你要把 \(a\) 补成一个排列. 定义 \(b_i=\min(a_{2i-1},a_{2i})\),求有多少种可能的 \( ...

  4. echart在X轴下方添加字

    使用Echart做统计图表,这个方便快捷还高大上 官方网址 https://www.echartsjs.com/ 按照文档,很快就做出了一个柱图表 在X轴下方,要显示出对应日期是星期几(上图最下方,用 ...

  5. Qt(MinGW版)在win7 64位上无法播放视频解决方案

    [原因分析] Qt自带的MinGW是32位版本,不支持64位的ffmpeg(解码器). 无法播放视频,问题就出在opencv_ffmpeg2411_64.dll(opencv\bin\)上. [解决方 ...

  6. fiddler和手机连接抓包实现

    很好用的抓包工具,不需要手机usb连接就可以抓包,查找bug超方便 实现方法: 借鉴跳转 手机版本:andriod 7.1.1 上面的方法的基础上遇到的问题: 在浏览器下载下来证书后始终无法打开(或许 ...

  7. DB(1):SQLAPI catch [Bind variable/parameter 'pay_acc_id' not found] !!!

    SQLAPI catch [Bind variable/parameter 'pay_acc_id' not found] !!! 出现这种报错,先检查命令类后面的参数是否混淆(SACommand s ...

  8. 支持向量机SVM原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)

    项目合作联系QQ:231469242 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?cours ...

  9. docker etcd

    etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,用于配置共享和服务发现 etcd内部采用raft协议作为一致性算法,etcd ...

  10. 五十七、linux 编程——UDP 编程 域名解析

    57.1 介绍 57.1.1 域名解析 57.1.2 域名解析函数 gethostent 可以获取多组,gethostbyname 只可以获取一组 /etc/hosts 文件设置了域名和 IP 的绑定 ...