在vue中做自定义表单验证

简介: 在vue中做自定义表单验证

公共common文件夹下建立validate.js

/* 是否邮编*/exportfunctionvalidateMail(rule, value,callback) {
constreg=/^[1-9][0-9]{5}$/;
if(value==''||value==undefined||value==null){
callback();
  }else {
if ((!reg.test(value)) &&value!='') {
callback(newError('请输入正确的邮编'));
    } else {
callback();
    }
  }
}
/* 是否手机号码或者固话*/exportfunctionvalidatePhoneTwo(rule, value, callback) {
constreg=/^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/;;
if (value==''||value==undefined||value==null) {
callback();
  } else {
if ((!reg.test(value)) &&value!='') {
callback(newError('请输入正确的电话号码或者固话号码'));
    } else {
callback();
    }
  }
}
/* 是否固话*/exportfunctionvalidateTelphone(rule, value,callback) {
constreg=/0\d{2}-\d{7,8}/;
if(value==''||value==undefined||value==null){
callback();
  }else {
if ((!reg.test(value)) &&value!='') {
callback(newError('请输入正确的固话(格式:区号+号码,如010-1234567)'));
    } else {
callback();
    }
  }
}
/* 是否手机号码*/exportfunctionvalidatePhone(rule, value,callback) {
constreg=/^[1][3,4,5,7,8][0-9]{9}$/;
if(value==''||value==undefined||value==null){
callback();
  }else {
if ((!reg.test(value)) &&value!='') {
callback(newError('请输入正确的电话号码'));
    } else {
callback();
    }
  }
}
/* 是否身份证号码*/exportfunctionvalidateIdNo(rule, value,callback) {
constreg=/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if(value==''||value==undefined||value==null){
callback();
  }else {
if ((!reg.test(value)) &&value!='') {
callback(newError('请输入正确的身份证号码'));
    } else {
callback();
    }
  }
}
/* 是否邮箱*/exportfunctionvalidateEMail2(rule, value,callback) {
constreg=/^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
if(value==''||value==undefined||value==null){
callback();
  }else{
if (!reg.test(value)){
callback(newError('请输入正确的邮箱地址'));
    } else {
callback();
    }
  }
}

在自己所需的.vue文件中引入全部,或者按需引入

import {validateIdNo,validatePhone,validateEMail2,validateMail} from'./validate.js'

在template中绑定rules,prop写rules里对应的值,如下

<el-formref="role" :model="role"label-width="120px" :rules="rules"><el-form-itemlabel="来信人"prop="fromName"><el-inputv-model="role.fromName"></el-input></el-form-item><el-form-itemlabel="邮箱"prop="email"><el-inputtype="email"v-model="role.email"></el-input></el-form-item><el-form-itemlabel="来信目的"prop="objectiveType"><el-selectv-model="role.objectiveType"class="handle-select mr10"><el-optionv-for="item in purposeList" :key="item.id" :label="item.dict.name" :value="item.id"></el-option></el-select></el-form-item><el-form-itemlabel="手机号"prop="phone"><el-inputv-model="role.phone"></el-input></el-form-item><el-form-itemlabel="固定电话"prop="fixedPhone"><el-inputv-model="role.fixedPhone"></el-input></el-form-item><el-form-itemlabel="地址"prop="address"><el-inputv-model="role.address"></el-input></el-form-item><el-form-itemlabel="邮编"prop="postcode"><el-inputv-model="role.postcode"></el-input></el-form-item><el-form-itemlabel="标题"prop="title"><el-inputv-model="role.title"></el-input></el-form-item><el-form-itemlabel="内容"prop="content"><el-inputtype="textarea" :rows="3"v-model="role.content"></el-input></el-form-item><el-form-itemlabel="是否公开"prop="isPublic"><el-selectv-model="role.isPublic"class="handle-select mr10"><el-optionkey="1"label="公开"value="1"></el-option><el-optionkey="2"label="不公开"value="0"></el-option></el-select></el-form-item><el-form-itemlabel="选择部门"prop="deptId"><el-cascader      :options="sponsor"change-on-select      :show-all-levels="false"v-model="role.deptId"placeholder="选择部门"></el-cascader></el-form-item><el-form-itemlabel="来信人身份证"prop="fromIdCard"><el-inputv-model="role.fromIdCard"></el-input></el-form-item><el-form-item><el-buttontype="primary"@click="submitFormAdd('role')"></el-button><el-button@click="dialogVisible = false"></el-button></el-form-item></el-form>

rules写在data里,完成

rules: {
fromName: [
    { required: true, message: "请输入来信人", trigger: "blur" }
  ],
email: [{ required: true, message: "请输入邮箱", trigger: "blur" },{validator:validateEMail2,trigger:"blur"}],
objectiveType: [
    { required: true, message: "请输入来信目的", trigger: "blur" }
  ],
phone: [
    { required: true, message: "请输入来信人手机号", trigger: "blur" },{validator:validatePhone,trigger:"blur"}
  ],
// fixedPhone: [{ required: true, message: "请输入来信人固定电话", trigger: "blur" }],address: [{ required: true, message: "请输入地址", trigger: "blur" }],
postcode: [{ required: true, message: "请输入邮编", trigger: "blur" },{validator:validateMail,trigger:"blur"}],
title: [{ required: true, message: "请输入来信题目", trigger: "blur" }],
content: [
    { required: true, message: "请输入来信内容", trigger: "blur" }
  ],
isPublic: [{ required: true, message: "必填选项", trigger: "blur" }],
status: [{ required: true, message: "选择状态", trigger: "blur" }],
deptId: [
    { required: true, message: "请输入来信部门id", trigger: "blur" }
  ],
fromIdCard: [
    { required: true, message: "请输入来信人身份证号", trigger: "blur" },{validator:validateIdNo,trigger:"blur"}
  ]
}
相关文章
|
3天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
3天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
3天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
3天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
2天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
4天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
2天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
17天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
4天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
9天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发