@kentos

Как мне изменить значения инпута?

Здравствуйте, написал функцию, которую повесил на onChange и отслеживает ввод в инпут, но мне нужно ограничить ввод, чтобы нельзя было ввести меньше 100 и больше 300
const changeInputHandler = (e) => {
    let valueInput = +e.target.value;
    if (valueInput  < range.min) valueInput  = range.min;
    if (valueInput  > range.max) valueInput  = range.max;
    handleChange(value);
  };

Примерно так, в range.min == 100, в range.max == 300, но когда я ставлю хардкорно value < range.min то все редактируется, а если между 100 и 300, то не могу вписать цифру, всегда либо 100, либо 300, как можно исправить это?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
1) задать паузу в проверке, так как вы набираете 1 и тут же срабатывает условие минимум, набираете 0 и у вас в инпуте уже 1000 (100 от первого условия и еще 0 от вас) и тут же фигачится 300.

2) Проверку выполнять только если количество символов больше 2, повторно выполнять проверку при онблур и при отправке данных.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Либо делать проверку в реальном времени, и пока вводится до 100 цифр выдавать рядом сообщение "Минимум 100 цифр должно быть", либо, как написали в комментарии выше, уже после нажатия на условную кнопку проверять, сколько было введено и от этого строить логику дальше.
Ответ написан
@mesaga1983
I like CSS
Народ, объясните, а чем плох вариант ограничиват с помощью атрибутов min, max в html? Ну кроме того, что это html и не всегда есть возможность задать значение атрибутов.
Ответ написан
Ваш ответ на вопрос

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

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