Как ограничить длину пользовательского ввода символов 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]
?