Подтвердить что ты не робот

Введенный номер мин. И макс не работает должным образом

У меня есть поле ввода type=number, и я установил для него значения min и max:

<input type="number" min="0" max="23" value="14">

Когда я изменяю время в визуализированном пользовательском интерфейсе, используя маленькие стрелки в правой части поля ввода, все работает правильно - я не могу идти выше 23 или ниже 0. Однако, когда я вводить цифры вручную ( используя клавиатуру), то ни одно из ограничений не имеет эффекта.

Есть ли способ запретить кому-либо вводить нужное количество?

4b9b3361

Ответ 1

В HTML5 max и min вы можете ограничить ввод значений только цифрами. Но вам нужно использовать JavaScript или jQuery для такого рода изменений. У меня есть идея использовать data- и сохранить старое значение:

$(function () {
  $("input").keydown(function () {
    // Save old value.
    if (!$(this).val() || (parseInt($(this).val()) <= 11 && parseInt($(this).val()) >= 0))
    $(this).data("old", $(this).val());
  });
  $("input").keyup(function () {
    // Check correct, else revert back to old value.
    if (!$(this).val() || (parseInt($(this).val()) <= 11 && parseInt($(this).val()) >= 0))
      ;
    else
      $(this).val($(this).data("old"));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="number" min="0" max="23" value="14" />

Ответ 2

Возможно, вместо того, чтобы использовать тип "число", вы можете использовать тип "диапазон", который ограничивал бы пользователя от ввода чисел, поскольку он использует панель слайдов, и если вы хотите настроить его для отображения текущего номера, просто используйте JavaScript

Ответ 3

В некоторых случаях min и max могут использоваться pattern. Он корректно работает с required.

Ответ 4

$(document).ready(function(){
    $('input[type="number"]').on('keyup',function(){
        v = parseInt($(this).val());
        min = parseInt($(this).attr('min'));
        max = parseInt($(this).attr('max'));

        /*if (v < min){
            $(this).val(min);
        } else */if (v > max){
            $(this).val(max);
        }
    })
})

Вот мой вклад. Обратите внимание, что v <min закомментировано, потому что я использую Bootstrap, который любезно указывает пользователю, что диапазон находится за пределами 1-100, но странно не выделяет> max!

Ответ 5

Один event listener, data-.

Вы можете просто предотвратить это, используя следующий скрипт:

$(document).on('keyup', 'input[name=quantity]', function () {
    var _this = $(this);
    var min = parseInt(_this.attr('min')) || 1; // if min attribute is not defined, 1 is default
    var max = parseInt(_this.attr('max')) || 100; // if max attribute is not defined, 100 is default
    var val = parseInt(_this.val()) || (min - 1); // if input char is not a number the value will be (min - 1) so first condition will be true
    if(val < min)
        _this.val( min );
    if(val > max)
        _this.val( max );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="number" class="form-control" name="quantity" max="250" min="1" value="">

Ответ 6

$(document).on('keyup', 'input[type=number][min],input[type=number][max]', function () {
    var _this = $(this);
    if (_this.val() === "-")
        return;

    var val = parseFloat(_this.val());

    if (_this.attr("min") !== undefined && _this.attr("min") !== "") {
        var min = parseFloat(_this.attr('min'));

        if (val < min)
            _this.val(min);
    }
    if (_this.attr("max") !== undefined && _this.attr("max") !== "") {
        var max = parseFloat(_this.attr('max'));

        if (val > max)
            _this.val(max);
    }
});
$(document).on('change', 'input[type=number][step]', function () {
    var _this = $(this);

    var val = parseFloat(_this.val());

    if (_this.attr("step") !== undefined && _this.attr("step") !== "") {
        var step = parseFloat(_this.attr('step'));

        if ((val % step) != 0)
            _this.val(val - (val % step));
    }
});

Ответ 7

Используйте этот метод диапазона вместо числового метода.

$(function () {
  $("#input").change(function () {
    // Save old value.
    $("#limit").val($("#input").val());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" id="limit" name="limit" value="14" readonly><br>
<input type="range" id="input" name="input" min="0" max="23" value="14"/>

Ответ 8

Если вы все еще ищете ответ, вы можете использовать тип ввода = "номер".
min max работает, если он установлен в следующем порядке:
1-имя
2-MaxLength
3 размера
4-минутная
5-макс
просто скопируйте его

<input  name="X" maxlength="3" size="2" min="1" max="100" type="number" />

когда вы вводите цифры/буквы вручную (используя клавиатуру), и отправляете небольшое сообщение, появляющееся в случае букв "пожалуйста, введите число" в случае номера из диапазона ", пожалуйста, выберите значение, которое не более/меньше, чем.."