限制数字前面不能输入多余的0,例如00123, 00.12
import Vue from 'vue'
Vue.directive('number', {
bind(el) {
el.onkeyup = () => {
if (el.value) {
if (parseInt(el.value) == parseFloat(el.value) && !el.value.includes('.')) {
if (paeseInt(el.value) == 0) {
el.value = 0
} else {
el.value = el.value.replace(/^0/, '')
}
} else {
// 小数
el.value = el.value.replace(/^0+\./g, '0')
}
// 输入多个0,输入框失去焦点或者是输入框失去焦点后点击其他的输入框,会出现00
// 解决:vue中绑定的值是通过监听input进行赋值的,直接修改输入框值不会触发input事件,需要通过dispatchEvent再次手动触发input事件
el.dispatchEvent(new Event('input'))
}
}
}
})
页面里面使用:
<a-input v-model="value" v-number />