const reg = /^(-)?(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$$/
tools.amountFormat = function (value) {
try {
if (!value) return ''
value = value.toString()
if (value && value.includes(',')) return value
let intPart = Number(value) - Number(value) % 1
let intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
let floatPart = '.00'
let value2Array = value.toString().split('.')
if (value2Array.length === 2) {
floatPart = value2Array[1].toString()
if (floatPart.length === 1) {
return intPartFormat + '.' + floatPart + '0'
} else {
return intPartFormat + '.' + floatPart
}
} else {
return intPartFormat + floatPart
}
} catch (e) {
console.log(e)
}
}
tools.amountFormatInputCancel = function (value) {
if (!value) return ''
if (value.split('.')[1] === '00' || value.split('.')[1] === '0') {
return value.split('.')[0].replace(/,/g, '')
} else {
if (reg.test(value.replace(/,/g, ''))) {
return value.replace(/,/g, '')
} else {
return value
}
}
}
tools.amountFormatInput = function (value) {
if (!value) return ''
if (reg.test(value)) {
return tools.amountFormat(value)
} else {
return value
}
}
tools.inputNumber = function (value) {
return value.replace(/[^0-9.]/g,"").replace(/(\.)(\d*)(\1*)/g,"$1$2")
}
export default {
install (Vue) {
Vue.prototype.$tools = tools
}
}
想要全局使用还需要在mine.js中use注册一下
import tools from './tools.js'
Vue.use(tools)
下边是使用方法 (由于在template中,所以不需要加this)
<el-input
v-model="num"
@blue="num = $tools.amountFormatInput(num)"
@focus="num = $tools.amountFormatInputCancel(num)"
@keyup.navite="num = $tools.inputNumber(num)"
></el-input>