validator 中的方法记得 callback()回调
今天在业务需求中,遇到了对于我来说有些复杂的表单规则校验rules,一般的表单校验如下就能满足一些校验需求,但是,有时候会遇到一些比较复杂的校验就需要用到validator验证器,去进行校验,
在element-ui中看到了validator验证器的使用,试着去用一下,结果没有报错,但是提交按钮会没有任何反应,就用最笨的方法去进行一一验证,最后发现还是自己粗心大意了,所以写篇博客记录一下小小日常,
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
],
region: [
{ required: true, message: '请选择活动区域', trigger: 'change' }
],
date1: [
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
]
}
接下来说一下validator验证器的使用,代码的话就只上关键性代码了, 不能让我整个
<script></script>标签吧
哈哈哈哈哈……
<el-form-item label="金额" prop="money">
<el-input v-model="form.money" placeholder="请输入金额" readonly/>
</el-form-item>
<el-form-item label="数量" prop="spendQty">
<el-input v-model.number="form.spendQty" placeholder="请输入数量" />
</el-form-item>
data() {
// 校验......value是我们从输入框输入的值,左右两个参数照写就得了
var checkQty = (rule, value, callback) => {
if (!value) {
return callback(new Error('数字不能为空'));
}
// 此处校验需注意,要在v-model后加.number,否者输入的是字符串,这地方就失效了
if (!Number.isInteger(value)) {
return callback(new Error('请输入数字值'));
}
// 获取消费类型,X100,Y200
var spendType = this.form.type;
if (spendType == 200) {
var allocQty = this.form.qty;
if (value > allocQty) {
callback(new Error('优惠卷数为' + allocQty + ',数量不能大于Y的数量'));
} else { // 在执行这个if的时候,忘记了如果不大于之后的callback()的回调,导致新增提交的时候,不大于时没有回调,确定按钮点着没反应,
callback();
}
} else {
callback();
}
};
return {
// 表单校验
rules: {
money: [
{ required: true, message: "金额不能为空", trigger: "blur" },
{
//此处用了正则表达式校验
pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "请输入金额数字,最多两位小数",
},
],
qty: [
{ validator: checkQty, trigger: "blur" }, // validator 验证器 trigger类型有blur和change
],
},
}
自我感觉在注释中写的差不多了,就不在一一赘述了,就说一下自我认为需要注意的点吧!
验证器validator中的方法是这个欧,如下图:(我不想多嘴的,我只是为了凑字数而已)
checkQty方法中需要注意的是,如果有什么 if(xxx){} 啥的其它逻辑判断的话,记得看你的程序最后是否有 callback() 方法的回调,如果没有,需要加上 callback() 回调,如果你走了 if 里面的方法,里面有回调,如果不走 if ,然后你就没有 callback() 的回调,那么可能你也会像我一样出现下面这种情况,往下滑……
如果 checkQty 方法最后没有执行 回调 callback(),那么在你点击提交按钮的时候,程序走到了这里的规则校验,然后下面的程序就不在运行,就会导致提交按钮没反应,最主要的是我没看到任何报错提示,可能是我知识浅薄无法毫查吧!
最后强调:
validator 中的方法记得 callback()回调
来点感慨,抒发哈紧张的情绪
对于一个前端都没玩过的人来说,突然写前端代码真的是折磨死人了,但是难归难,当你能看懂会写之后,发现前端还是挺有意思, 我也是最近一段时间才去接触前端知识,去菜鸟驿站从HTML开始学习,一个标签一个练习的去敲,就是为了形成一种肌肉记忆,在你知道要写啥的时候,大脑还没有反应手就给你敲出来了。
每天不断去学习,每天积累一点,突然想到一句经典名言:
“每当天上掉下一粒沙,于是形成了撒哈拉,每当天上掉下一滴水,于是形成了太平洋”,
每当经验汇聚成河、成海,你就是能主宰你的航向,让我们杨帆启航……,去看看这繁华世界。
当你遇到无法解决的问题的时候,你不要放弃,你看,你还有进步空间,哈哈哈哈哈哈……
心之所向,梦之所想,骚年,努力吧!!!