封装方法
// 只允许输入数字包含负数
export function getNumber(val) {
const t = val.charAt(0)
// 先把非数字的都替换掉,除了数字
val = val.replace(/[^\d]/g, '')
// 如果第一位是负号,则允许添加
if (t === '-') {
val = '-' + val
}
return val
}
// 只允许输入正数包
export function getNum(val) {
// 先把非数字的都替换掉,除了数字
val = val.replace(/[^\d]/g, '')
return val
}
// 只允许输入数字包含小数点
export function getFloorNumber(val) {
// 先把非数字的都替换掉,除了数字
val = val.replace(/[^\d.]/g, '')
val = val.replace(/\.{2,}/g, '.')
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
const index = val.indexOf('.')
if (index != -1) {
const arr = val.split('.')
if (arr[1].length > 2) {
arr[1] = arr[1].substr(0, 2)
}
val = arr.join('.')
}
return val
}
// 只允许输入数字包含小数,不限制长度
export function getFloorNumNoLength(val) {
const t = val.charAt(0)
if (t === '.') {
return val.replace('.', '')
}
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
// 先把非数字的都替换掉,除了数字
val = val.replace(/[^\d.]/g, '')
return val
}
// 显示10位且2位小数点
changeNumber(name, obj) {
const t = obj.length > 10 ? obj.slice(0, 10) : obj
this.$set(this.ruleForm, name, getFloorNumber(t))
},
// 不能是小数
changeNum(name, obj) {
const t = obj.length > 10 ? obj.slice(0, 10) : obj
this.$set(this.ruleForm, name, getNum(t))
},
使用
<el-input
v-model="ruleForm.area"
type="number"
maxlength="10"
placeholder="请输入面积"
@input="changeNumber('area',ruleForm.area)"
>
<template slot="append">㎡</template>
</el-input>
<el-input
v-model="ruleForm.numberOfParking"
type="number"
maxlength="10"
placeholder="请输入数量"
@input="changeNum('number',ruleForm.number)"
/>