Как ограничить количество символов в input number в пределах от 0 до 999.999?

У меня есть input, нужно ограничить вводимое значение от 0 до 999.999. Пробовал несколько вариантов:

<input type="number" min="0" max="999.999" step="0.001">

<input type="number" min="0" step="0.001" onkeypress="this.value=this.value.substring(0,4)">

Но так ничего и не вышло


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

Автор решения: Yugofx

По сути, max и min это валидаторы. Но они никак не ограничивают ввод с клавиатуры и простой копи-паст.

Воспользуйтесь простым обработчиком события и через JS установите минимальное/максимальное значение при выходе за лимиты.

const inputs = document.querySelectorAll('input[type=number]');
Array.from(inputs).forEach(input => {
    const min = +input.min;
    const max = +input.max;

    input.addEventListener('input', (e) => {
        const value = +input.value;
        if (value > max) { input.value = max }
        else if (value < min) { input.value = min }
    }
}));
→ Ссылка