vue限制输入框只能输入数字和一个小数点,并可保留小数点后任意位
vue限制输入框只能输入数字和一个小数点,并可保留小数点后任意位
·
<template>
<el-input v-model="financeScale" @input="financeScale=formatDecimal(financeScale,2)" placeholder="请输入">
</el-input>
<template/>
export default{
data(){
return {
financeScale:''
},
methods:{
formatDecimal (str, num) {//str当前输入值,num是想要保留的小数位数
str = String(str)
if (!str.trim()) {
return str
}
var len1 = str.substr(0, 1)
var len2 = str.substr(1, 1)
// 如果第一位是0,第二位不是点,就用数字把点替换掉
if (str.length > 1 && len1 === 0 && len2 !== '.') {
str = str.substr(1, 1)
}
// 第一位不能是.
if (len1 === '.') {
str = ''
}
// 限制只能输入一个小数点
if (str.indexOf('.') !== -1) {
var str_ = str.substr(str.indexOf('.') + 1)
if (str_.indexOf('.') !== -1) {
str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
}
}
// 正则替换
str = str.replace(/[^\d^.]+/g, '') // 保留数字和小数点
if (num || num === 0) {
var rest = str.split('.')[1]
if (rest && rest.length > num) {
rest = rest.substr(0, num)
str = str.split('.')[0] + '.' + rest
}
}
return str
}
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)