微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vue使用rules对表单字段进行校验

欢迎一起讨论

Geooo的个人博客https://geooo.gitee.io/geoooblog/

环境:基于 Vue + ElementUI

  1. 在 el-form 标签添加 rules 属性 ,并在<el-form-item> 内添 prop 属性去对应 rules 中的规则
<el-form :model="form" :rules="rules" ref="form" lable-width="100px"> <el-form-item label="商品ID" prop="id" > <el-input v-model="form.id" placeholder="输入订单号" clearable></el-input> </el-form-item> <el-form-item lable="商品名称" prop="name"> <el-input v-model="form.name" placeholder="输入商品名称" clearble></el-input> </el-form-item> <el-form-item lable="商品分类" prop="sort"> <el-input v-model="form.sort" placeholder="选择商品分类" clearble></el-input> </el-form-item> <el-form-item lable="商品数量" prop="count"> <el-input v-model="form.count" placeholder="选择商品数量" clearble></el-input> </el-form-item> </el-form> 
  1. 创建一个约束函数( validate.js ) 定义验证规则
/* 是否是公司邮箱*/ export function isWscnEmail(str) { const reg = /^[a-z0-9](?:[-_.+]?[a-z0-9]+)*@wallstreetcn\.com$/i; return reg.test(str.trim()); } /* 合法uri*/ export function validateURL(textval) { const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?‘\\+&%$#=~_-]+))*$/; return urlregex.test(textval); } // 验证是否整数 export function isInteger(rule,value,callback) { if (!value) { return callback(new Error(输入不可以为空‘)); } setTimeout(() => { if (!Number(value)) { callback(new Error(请输入正整数‘)); } else { const re = /^[0-9]*[1-9][0-9]*$/; const rsCheck = re.test(value); if (!rsCheck) { callback(new Error(请输入正整数‘)); } else { callback(); } } },1000); } // 验证是否是[0-1]的小数 export function isDecimal(rule,callback) { if (!value) { return callback(new Error(输入不可以为空‘)); } setTimeout(() => { if (!Number(value)) { callback(new Error(输入数字‘)); } else { if (value < 0 || value > 1) { callback(new Error(请输入[0,1]间的数字‘)); } else { callback(); } } },1000); } // 验证端口是否在[0,65535]之间 export function isPort(rule,callback) { if (!value) { return callback(new Error(输入不可以为空‘)); } setTimeout(() => { if (value == ‘‘ || typeof(value) == undefined) { callback(new Error(请输入端口值‘)); } else { const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/; const rsCheck = re.test(value); if (!rsCheck) { callback(new Error(请输入在[0-65535]间的端口值‘)); } else { callback(); } } },1000); } /* 小写字母*/ export function validateLowerCase(str) { const reg = /^[a-z]+$/; return reg.test(str); } 

3.在我们当前vue页面引入 validate.js 验证规则文件,在export default中定义rules规则,使用语法为: {validate:验证方法,trigger: 触发条件}

import { isInteger } from ‘../../util/validate.js‘; //引入规则验证js export default { name: ‘buyDetail‘,data(){ form: { id: ‘‘,name: ‘‘,sort: ‘‘,count: ‘‘,},rules: { id: [{ require: true,message: 请输入商品ID‘,trigger: ‘blur‘},{ validate: ‘isInteger‘,trigger: ‘blur‘}],name: [{ require: true,message: 请输入商品名称‘},sort: [{ require: true,message:请输入商品分类‘,trigger:‘blur‘}],count: [{ require: true,message:请输入商品数量‘,{ validate:‘isInteger‘,trigger:‘blur‘}] },} } 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐