Как ограничить длину пользовательского ввода символов HTML5 тип ввода = «число»?

Как я могу ограничить пользовательский ввод до определенной длины в HTML5input[type=number] текстовое окно?

ответы на

Как я могу ограничить возможные входные данные в элементе HTML5 «число»?

не обрабатывать незаконные вводы

<input class="quantity" type="number" min="0" max="99999" maxlength="5" />

$("quantity").keyup(function(){
    var $field = $(this);
    if ($field.val().length > Number($field.attr("maxlength"))) {
        var value = $field.val().slice(0, 5);
        $field.val(value);
    }
});

Я знаю, что атрибут maxlength не поддерживается, но я использую его для получения заданной длины.

Приведенный выше код отлично работает в Firefox, но в Chrome и Safari он работает, только если я ввожу пять символов «VALID». Когда я начинаю вводить любые недопустимые символы, например, «a», «b» и т. д., я могу печатать больше букв, и цвет текстового поля меняется на красный.

Я обнаружил, что когда ввод становится недействительным$field.val() всегда возвращает пустую строку и$field.val().length возвращается0.

Я даже пытался преобразовать keyCode в символ, предназначенный для ввода, и сохранить его в атрибуте «data-value» в поле ввода, чтобы проверить и перезаписать значение ввода, но это не показалось надежным.

Есть ли какое-либо решение, с помощью которого я могу сделатьinput[type=number] вести себя так же, какinput[type=text][maxlength=5]?

Ответы на вопрос(4)

Ваш ответ на вопрос