如何用element的区间选择组件限制输入交易金额
Admin 2022-06-14 群英技术资讯 1159 次浏览
今天就跟大家聊聊有关“如何用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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
怎样用vue实现无规则截图的功能?我们比较常见的截图功能为了应对多种场景,一般都是有规则的截图,但是随着用户的需求增多,有规则的截图功能已经不能很好的满足需求,对此这篇文章我们就来看看无规则的截图功能要怎样做。
如果有使用过jQuery,都知道不同版本的jQuery存在冲突问题。因此,不同版本会有$冲突,那么我们要如何处理这个冲突呢?下面我们一起来看一看。
判断方法:1、使用“document.getElementById("id值")”语句根据指定id值获取div元素对象;2、利用if语句判断div是否存在,语法“if (div元素对象){//元素存在}else{//元素不存在}”。
这篇文章主要介绍策略模式的内容,JavaScript设计模式有很多种类型,策略模式就是其中的一种设计模式,下面有详细的介绍和实例,对新手学习和理解JavaScript设计模式有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章能有所收获。
这篇文章主要介绍了JavaScript树结构深度优先算法,树结构可以说是前端中最常见的数据结构之一,比如说DOM树、级联选择、树形组件,更多相关内容需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008