Vanilla JS掩蔽输入中的错误

时间:2018-10-28 16:55:36

标签: javascript input currency maskedinput

因此,我在Vanilla JS中编写了一个带掩码的输入,并且遇到一个小错误。因此理想情况下,它应该将输入格式设置为货币,例如输入123的行为如下:$ 0.01 ... $ 0.12 ... $ 1.23 但就目前而言,它的行为如上所述,还包括键入的最后一个字母,因此输出如下所示:$ 0.011 ... $ 0.122 ... $ 1.233 有没有办法来解决这个问题?这样输入的当前字符不会显示在输入中?

这是我正在处理的Codepen链接: https://codepen.io/kkannen/pen/XxGxmQ?editors=0010

let dollars = "0"
let cents = "00"
let inNum = ""

function dollarsAndCents(num) {
    const dol = Math.floor(num/100)
    const c = num%100
    return[dol, c]
}

input.value = `$${dollars}.${cents}`

function masked(e) {
    if(!Number(e.key)){
        inNum += null
    } else {
            inNum += Number(e.key)
        if (inNum.length <= 2){
            const centsArr = cents.split("")
            centsArr.shift()
            centsArr.push(e.key)
            cents = centsArr.join("")
        } else {
            [dollars, cents] = dollarsAndCents(inNum)
        }
        input.value = `$${dollars}.${cents}`
    }
}

0 个答案:

没有答案