v为输入框的值,type为输入框的类型
addressChange: function (v, type) {
var _this = this;
//控制输入框只能输入数字,而且小数位不超过二
v = v.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')
Vue.nextTick(function () {
_this.$set(_this.basicInforList, 'feeDealType_' + type, v);
var numbers = [201, 202, 363, 360, 385, 367, 307, 381, 384, 365, 380, 382, 366, 361, 374, 362,313];(输入框数量)
var sum = 0;
for (i = 0; i < numbers.length; i++) {
sum = sum + Number(_this.basicInforList['feeDealType_' + numbers[i]])
}
sum = sum.toFixed(2) (只留两位小数)
if (Number(sum) > 100) {
_this.$message({
type: 'warning',
message: '费率合计不能大于100%'
})
_this.$set(_this.basicInforList, 'feeDealType_' + type, '');
sum = (sum - v).toFixed(2);
}
_this.basicInforList['feeDealType_302'] = sum; (总和的输入框,不需要纳入计算,只需要展示)
})
},
html部分
<el-input v-model="basicInforList.feeDealType_201"
@input='addressChange($event,201)' placeholder="请输入">
<i slot="suffix">%</i></el-input>
省略多个输入框。。。。。。