@FlapJalc

Как сделать маску для ввода валюты?

У меня есть поле для ввода цены. При вводе чисел, они должны форматироваться в следующем формате:
1 000 ₽
10 000 ₽
100 000 ₽

Без запятых, нижних подчёркиваний, точек и т.д.

Пересмотрел много плагинов, но какие - то уже устаревшие, какие - то некорректно работают на мобильниках, а в каких - то нет нужных настроек. Наверняка, те разработчики которые сталкивались с решением подобной задачи имеют рабочие решения. Посоветуйте пожалуйста.
  • Вопрос задан
  • 1234 просмотра
Решения вопроса 1
@vladdimir
Верстальщик
Для одного только этого можно обойтись и без библиотеки, например так:
// Функция заменяет число на число с пробелами
const musk = val => {
    return val
        .toString()
        .split('')
        .map((num, i, arr) => {
          return (arr.length - 1 - i) % 3 === 0 && i !== arr.length - 1
            ? num + ' '
            : num
        })
        .join('')
}
//  меняет значение формы на отформатированное значение
const inpHandler = function() {
  return this.value = musk(this.value)
}

// вешаем обработчик
input.addEventListener('input', inpHandler)

//Консольные тесты
const testValue = {value: 10000, inpHandler: inpHandler}
console.log(testValue.inpHandler())
console.log(musk(1000))
console.log(musk(10000))
console.log(musk(100000))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Почти любая библиотека это умеет. Хоть на jQuery, хоть без него. Таких штук сотни. Если не работает или не подходит одна - другая точно вас утроит. Ищите в гугле.
Например: https://imask.js.org/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы