input限制輸入小數點後兩位(vue版本)

拋磚引玉——上代碼

首先想到在input事件中正則匹配一下,可是,在輸入錯誤格式或非數字的狀況下,會將整個輸入框清空,體驗很很差:
<template>
    <input 
        placeholder="限制小數點後兩位" 
        type="text" 
        v-model="count" 
        @input="scope.row.count=/^\d+\.?\d{0,2}$/.test(count)||count == '' ? count : count=''">
</template>
<script>
    data() {
        return {
            count: 0
        }
    }
</script>
而後我就加了一個字段,在keyup事件中賦值,而後匹配:
<template>
    <input 
        placeholder="限制小數點後兩位" 
        type="text" v-model="count" 
        @keydown="checkKeydown($event, count)"
        @input="scope.row.count=/^\d+\.?\d{0,2}$/.test(count)||count == '' ? count : count=checkValue">
</template>
<script>
    data() {
        return {
            count: '',
            checkValue: ''
        }
    },
    methods: {
        checkKeydown(e, value){
            this.checkValue = value;
        }
    }
</script>
這樣已經能夠實現需求了,不過體驗上仍是有一點怪,在輸入不匹配時光標會閃動,最佳的體驗應該是在keyup中將不匹配的按鍵直接return,不過這樣須要額外判斷一下backspace、delete、——>、<——等,不知各位大佬是怎麼實現的,歡迎評論!!
附:關於input的均可以交流呀
相關文章
相關標籤/搜索