1、表单验证规则封装方法
/** * validate 表单验证规则 * data : object 需要验证的表单对象 * rules: object 表单验证规则,借鉴element ui 规则 * func(): function 表单验证通过之后,执行的代码块 * */ function validate(data, rules, func = function() {}) { let message = ''; for (let index in Object.keys(rules)) { let array = rules[Object.keys(rules)[index]] for (let dex in array) { for (let keyword in array[dex]) { switch (keyword) { case 'required': // 必填 if (array[dex][keyword] && !data[Object.keys(rules)[index]]) { message = array[dex]['message'] } break; case 'min': // 最小长度 if (data[Object.keys(rules)[index]].length < array[dex][keyword]) { message = array[dex]['message'] } break; case 'max': // 最大长度 if (data[Object.keys(rules)[index]].length > array[dex][keyword]) { message = array[dex]['message'] } break; case 'pattern': // 自定义正则验证 if (!array[dex][keyword].test(data[Object.keys(rules)[index]])) { message = array[dex]['message'] } break; } if (message) { this.common.Toast(message); return false; } } } } if (!message) { func(); } } export default validate;
2、方法挂载
import validate from '@/utils/validate.js';
Vue.prototype.$Validate = validate; // 表单验证
3、定义验证规则
formData: { area: '', num: '', },
rules: { area: [{ required: true, message: '请选择区域' }], num: [{ required: true, message: '请输入总数' }], }
4、验证表单数据
this.$Validate(this.formData, this.rules, () => { // 表单验证通过 });