Как ограничить водимое число в input number до тысячной (0.001, 555.012...)?

Мне нужно что-бы пользователь мого ввести число от 0.000 до 9999.000 и все числа в диапазоне между ними. К примеру: 0.1, 10.115, 110.999, 9999.011... Пробовал такой вариант:

<input  type="number" min="0" max="999.999" step="0.001">
const inputs = document.querySelectorAll('input[type=number]');

Array.from(inputs).forEach(input => input.addEventListener('input', (e) => {
  const value = +e.target.value;
  const min = +e.target.min;
  const max = +e.target.max;

  if (value > max) {
    input.value = 999.999 
  } else if (value < min) {
    input.value = 0 
  }
}));

Вышло не то что нужно.


Ответы (1 шт):

Автор решения: Alexander Lonberg

const inputs = document.querySelectorAll('input[type=number]')

function replace() {
  const re = /(?<=\d{3})(\d+)/g
  if (re.test(this.value)) {
    this.value = this.value.replace(re, '')
  }
}

Array.from(inputs).forEach((i) => i.addEventListener('input', replace))
<input type="number" min="0" max="999.999" step="0.001">
<input type="number" min="0" max="999.999" step="0.001">

PS: и функции необходимо устанавливать одну. В варианте выше это приведет к созданию множества функций.

→ Ссылка