最近我们公司将前端框架由easyui 改为 vue+elementui 。自学vue两周 就开始了爬坑之路。业余时间给大家分享一下心得,技术新手加上第一次分享(小激动),有什么不足的地方欢迎大家指正,多多交流才能共同进步!

1.问题 我们公司的项目比较大 表格 表单的页面都不胜数 ,基于此封装了一些 可复用的代码。

2.分析  vue给了我们不一样的前端代码体验  element ui 给我们一套功能强大的组件 减少了我们大量的开发时间 。双剑合璧 天下无敌!  但每个公司的代码风格不同  用户的要求也比较刁端 ui团队设计完美 我们怎样才能用这个两把剑闯出自己的江湖 就需要大家好好琢磨了。

废话不多说!进入正题

form表单验证规则的封装

1.ellementui的处理    1. Form 组件上一次性传递所有的验证规则  2 .单个的表单域上传递属性的验证规则 。

prop="email"

label="邮箱"

:rules="[

{ required: true, message: '请输入邮箱地址', trigger: 'blur' },

{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' }

]"

>

label="姓名:"

prop="name"

:rules="[{ required: true, message: '请输入姓名', trigger: 'blur' }]">

:rules="filter_rules({required:true,type:'mobile'})">

观察上面的代码 有一个共性 单个的表单域上传递属性的验证规则 ,给rules 属性一个数组

重点来了 19行代码是什么意思????

这就是我们封装的全局可复用的方法   传入需要的参数,你就可以得到你想要的验证规则 rules 数组

在我们的工具包建一个 js文件  我们的全局方法就有了

exports.install = function (Vue, options) {

Vue.prototype.filter_rules = function (item){

return [{},{}]

}

}

还要在main.js 中注册

下面分享下我的js文件

import { validateMoneyNumber,qq,mobile,regexn,integer} from '@/utils/validate'

exports.install = function (Vue, options) {

/**

* 注意: 定义type 规则时 不用做非空验证

* 只需要传入 required:true 即可

* */

/*保留两位小数*/

const isvalidateMoney = (rule, value, callback) => {

if(value != null && value != "") {

if(!validateMoneyNumber(value)) {

callback(new Error('请输入正确的数字,最多保留两位小数!'))

} else {

callback()

}

}

else{

callback();

}

}

/*验证QQ号码*/

const isvalidateQQ= (rule, value, callback) => {

if(value != null && value != "") {

if(!qq(value)) {

callback(new Error('您输入的QQ号不正确!'))

} else {

callback()

}

}

else{

callback();

}

}

/*验证手机号*/

const isvalidateMobile= (rule, value, callback) => {

if(value != null && value != "") {

if(!mobile(value)) {

callback(new Error('您输入的手机号不正确!'))

} else {

callback()

}

}

else{

callback();

}

}

/*含有非法字符(只能输入字母、汉字)*/

const isvalidateRegexn= (rule, value, callback) => {

if(value != null && value != "") {

if(!regexn(value)) {

callback(new Error('含有非法字符(只能输入字母、汉字)!'))

} else {

callback()

}

}

else{

callback();

}

}

/*请输入正整数*/

const isvalidateInteger= (rule, value, callback) => {

if(value != null && value != "") {

if(!integer(value)) {

callback(new Error('请输入正整数!'))

} else {

callback()

}

}

else{

callback();

}

}

/**

* 参数 item

* required true 必填项

* maxLength 字符串的最大长度

* min 和 max 必须同时给 min < max type=number

* type 手机号 mobile

* 邮箱 email

* 网址 url

* 各种自定义类型 定义在 src/utils/validate 中 持续添加中.......

* */

Vue.prototype.filter_rules = function (item){

let rules = [];

if(item.required){

rules.push({ required: true, message: '该输入项为必填项!', trigger: 'blur' });

}

if(item.maxLength){

rules.push({ min:1,max:item.maxLength, message: '最多输入'+item.maxLength+'个字符!', trigger: 'blur' })

}

if(item.min&&item.max){

rules.push({ min:item.min,max:item.max, message: '字符长度在'+item.min+'至'+item.max+'之间!', trigger: 'blur' })

}

if(item.type){

let type = item.type;

switch(type) {

case 'email':

rules.push({ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' });

break;

case 'qq':

rules.push( { validator: isvalidateQQ, trigger: 'blur,change' });

break;

case 'mobile':

rules.push( { validator: isvalidateMobile, trigger: 'blur,change' });

break;

case 'regexn':

rules.push( { validator: isvalidateRegexn, trigger: 'blur,change' });

break;

case 'integer':

rules.push( { validator: isvalidateInteger, trigger: 'blur,change' });

break;

default:

rule.push({});

break;

}

}

return rules;

};

};

看明白了吗  第一行  是引入各种正则表达式   然后自定义校验规则    。  传入你自定义的参数 就可以拿到你想要的规则   (很熟悉吧  参考 easyui 表单验证)

下面是效果

ElementUi rules表单验证

可以在pattern中书写正则,并且配合elementUI进行表单验证。

pattern 属性规定用于验证输入字段的模式。模式指的是正则表达式。

rules: {

name:[{

required: true,

message: '请输入用户名',

trigger: 'blur'

},{

min: 2,

max: 5,

message: '长度在 2 到 5 个字符'

},{

pattern: /^[\u4E00-\u9FA5]+$/,

message: '用户名只能为中文'

}

//{ pattern:/^[a-zA-Z]w{1,4}$/, message: '以字母开头,长度在2-5之间, 只能包含字符、数字和下划线'}

],

password: [{

required: true,

message: '请输入密码',

trigger: 'blur'

}, {

min: 6,

max: 30,

message: '长度在 6 到 30 个字符'

}, {

pattern: /^(\w){6,20}$/,

message: '只能输入6-20个字母、数字、下划线'

}],

mobile:[{

required: true,

message: '请输入手机号码',

trigger: 'blur'

},

{validator:function(rule,value,callback){

if(/^1[34578]\d{9}$/.test(value) == false){

callback(new Error("请输入正确的手机号"));

}else{

callback();

}

}, trigger: 'blur'}

],

// pattern: /^1[34578]\d{9}$/, message: '目前只支持中国大陆的手机号码' }

peopleID:[{

required: true,

message: '请输入身份证ID',

trigger: 'blur'

},{

pattern:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: '你的身份证格式不正确'

}

],

carId:[

{required: true, message: '请输入车牌号', trigger: 'blur'},

{pattern:/(^[\u4E00-\u9FA5]{1}[A-Z0-9]{6}$)|(^[A-Z]{2}[A-Z0-9]{2}[A-Z0-9\u4E00-\u9FA5]{1}[A-Z0-9]{4}$)|(^[\u4E00-\u9FA5]{1}[A-Z0-9]{5}[挂学警军港澳]{1}$)|(^[A-Z]{2}[0-9]{5}$)|(^(08|38){1}[A-Z0-9]{4}[A-Z0-9挂学警军港澳]{1}$)/,

message: '常规格式:晋B12345'},

],

},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

vue 表单验证正则_vue elementui form表单验证的实现相关推荐

  1. vue 表单验证正则_vue elementUI如何自定义表单验证规则

    一.elementUI自带了一部分表单验证规则,本文讲解如何使用自定义验证规则来完成密码的二次验证. 1.1.首先添加验证邮箱和电话规则和正则表达式// 验证邮箱的规则 var checkEmail  ...

  2. elementUI form表单重置问题

    elementUI form表单重置问题 问题 如果修改了data里的表单form默认值,那么重置以后就是你修改以后的值,而不是data里的值了所以this.$refs.ruleForm.resetF ...

  3. element手机验证格式_vue封装 element-ui form表单验证 正则匹配手机号 自定义校验表格内容...

    效果 image.png 在methods中 //检查手机号 isCellPhone(val) { if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) { return f ...

  4. vue 给form表单赋值_vue获取form表单的值示例

    vue获取form表单的值示例 这里使用的是Element-ui组件 html: JS: var phone = this.phone; var password = this.password; v ...

  5. elementui from表单提交_vue+element-ui el-form表单验证及提交验证

    单项验证 html v-if是画面显示判定直接无视,主要需要在要做验证的文本框上加标签,然后需要加上 :prop和 :rules两个属性.各属性名关系如图所示,标签最外层,中层,最内层. 的:mode ...

  6. element-ui form表单如何逐个验证

    1.背景: 使用element-ui的form表单校验功能时,点击提交会对所有要校验的值进行校验,如下图: 虽然提示了要必须填写的值,但是不太美观,产品经理要求点击提交只提示最先校验的那个,如下图 2 ...

  7. Element-ui Form表单校验-兜底校验-自定义检验规则

    用户登录表单-数据双向绑定 <template><div class="form-container"><el-form label-width=&q ...

  8. elementui form表单校验不通过问题

    项目场景: Form 表单绑定rulue表单校验 问题描述 提示:这里描述项目中遇到的问题: 例如:表单明明有数据,但校验一直不通过,我检查了rules绑定的字段跟v-mode的字段是一直的,类型也是 ...

  9. element-ui form表单,select多选时,初始自动校验问题解决

    使用 el-select 多选框配置表单校验时, 如果绑定值为空字符串,表单中的多选下拉框会自动执行校验并提示红色文字提示,体验非常不好: 原因:form表单-value1默认为空字符串 data() ...

最新文章

  1. IT人保持健康的必备法宝
  2. 【图像分割模型】用BRNN做分割—ReSeg
  3. cmake Debug模式和Release模式
  4. 鲜为人知的Java 8功能:广义目标类型推断
  5. 阿里宜搭发布专有云版本,基于云原生的应用构建PaaS平台
  6. android listview asynctask,关于android:ListView + ArrayList + AsyncTask
  7. ruby+selenium-webdriver一步一步完成自动化测试(6)—-生成测试报告
  8. android 自定义view之雷达扫描,基于Android自定义控件实现雷达效果
  9. oracle decode(nvl(estimate_qty,0),0,1,estimate_qty) 函數
  10. 南京工业大学 乐学python_[紫金山乐学帮]南工大研究出新型智能吸附剂,能大大降低能耗...
  11. java final修饰的数组_Java基于final修饰数据过程解析
  12. vb酒店管理信息系统
  13. FX3 DMA生产者消费者ID代表的含义
  14. 自动更新Selenium驱动chromedriver
  15. 三菱FX系列PLC以太网连接西门子wincc软件
  16. 项目经营,不仅仅停留在嘴上:政企项目,要做好项目交付,但又不能仅仅止步于“项目交付”
  17. 二. 滤波器件选型学习笔记
  18. WPF仿QQ聊天框表情文字混排实现
  19. html ppt 插件,jquery幻灯片插件slidr.js
  20. 产品场景拆解之36氪

热门文章

  1. oracle模糊查询特殊字符不匹配问题
  2. Python关键字yield
  3. 基于虚幻引擎与AppleAR的人脸动画实时迁移项目
  4. C#实现自动发送邮件,以及问题解决(SMTP邮箱服务器使用QQ的为例)
  5. android中oncreate方法,Android textView 中 onCreate 方法的改变
  6. RHadoop学习群电子刊物《每周荟萃》出刊了
  7. SpringCloud 项目搭建
  8. spring cloud ,spring boot application.properties 配置属性列表
  9. html语言表格标记符号,html标记中哪个标记表示表格
  10. ...mapGetters,mapGetters,...mapState,mapState的用法