如何用element的区间选择组件限制输入交易金额
Admin 2022-06-14 群英技术资讯 1645 次浏览
今天就跟大家聊聊有关“如何用element的区间选择组件限制输入交易金额”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“如何用element的区间选择组件限制输入交易金额”文章能对大家有帮助。这里以项目的需求为例,基本的需求如下:

代码如下:(页面)
<el-col :span="8" v-if="item.qttccType === 1"> <el-col :span="14"> <el-form-item :label="item.qttccName" :prop="'list.'+ index + '.startNum'" :rules="item.qttccName === '交易金额' ? startMoneyRule(tIndex) : []"> <el-input v-model.number="item.qttcStartNum" style="width: 100%;" @change="handleMinChange(index)"></el-input> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="~" label-width="10px" :prop="'list.'+ index + '.qttcEndNum'" :rules="item.qttccName === '交易金额' ? endMoneyRule(tIndex) : []"> <el-input v-model.number="item.qttcEndNum" style="width: 60%;" @change="handleMaxChange(index)"></el-input> </el-form-item> </el-col> </el-col>
根据上面的思路,单个表单的校验属于公共校验方法,关联校验需要分别校验(因为对比对象不同,且提示语不同),由此在自定义校验中有了如下定义:
公共校验方法:正整数校验、区间校验
validateCom(rule, value, callback) {
const MIN_NUMBER = 1
const one = Number(value)
if (Number.isInteger(one)) {
if (one < MIN_NUMBER) {
return callback(new Error('输入值必须大于0'))
} else if (one.length > 50) {
callback(new Error('最大长度为50位'))
}
return callback()
}
return callback(new Error('请输入数字值'))
}
关联校验:
startMoneyRule(index) {
const validateMin = (rule, value, callback) => {
const one = Number(value)
const max = Number(this.form.list[index].qttcEndNum)
if (!max || one < max) {
return callback()
}
return callback(new Error('输入值不得大于最大阈值'))
}
const R = []
R.push({ required: false, message: '请填写交易金额最小值', trigger: 'blur' },
{ validator: this.validateCom, trigger: 'blur' },
{ validator: validateMin, trigger: 'blur' })
return R
},
endMoneyRule(index) {
const validateMax = (rule, value, callback) => {
const one = Number(value)
const min = Number(this.form.list[index].qttcStartNum)
if (!min || one > min) {
return callback()
}
return callback(new Error('输入值不得小于最小阈值'))
}
const R = []
R.push({ required: false, message: '请填写交易金额最大值', trigger: 'blur' },
{ validator: this.validateCom, trigger: 'blur' },
{ validator: validateMax, trigger: 'blur' })
return R
}
很显然,左侧值是小于右侧值的,但是校验提示仍然报错。究其原因,还是关联校验的问题。既然是关联交验,改变其中一个时应该会重新校验两个。很简单,在input改变时,重新校验表单不就OK了吗
handleMinChange(index) {
this.$refs.form.validateField('list.' + index + '.qttcEndNum')
},
handleMaxChange(index) {
this.$refs.form.validateField('list.' + index + '.qttcStartNum')
}
大功告成,忘说了。我的表单是动态从后台获取的,所以校验rules是动态加的!!!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家详细介绍了JavaScript canvas实现刮刮乐案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
JS超出精度数字问题怎么办?比如一个数 1÷3=0.33333333...... 大家都知道3会一直无限循环,数学可以表示,但是计算机要存储,方便下次取出来再使用,但0.333333...... 这个数 无限循环,你让计算机怎么存储?
最近接触了vue.js,一度非常好奇vue.js是如何监测数据更新并且重新渲染页面,这篇文章主要给大家介绍了关于Vue源码学习之响应式是如何实现的相关资料,需要的朋友可以参考下
本文实例讲述了JavaScript中的this妙用。分享给大家供大家参考,具体如下:
开发一个网络游戏,难免要处理网络通信。有几点问题需要注意
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008