Ошибка в ванили JS Маскированный ввод - PullRequest
0 голосов
/ 28 октября 2018

Итак, я пишу маскированный ввод в vanilla JS, и у меня небольшая ошибка.поэтому в идеале он должен форматировать ввод как валюту, например, ввод 123 будет вести себя так: $ 0,01 ... $ 0,12 ... $ 1,23, но, как сейчас, он ведет себя так же, как и выше, но также включает в себя последнюю напечатанную букву, так что вывод выглядитthis: $ 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}`
    }
}
...