maxlength
Атрибут не работает с <input type="number">
. Это происходит только в Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
источник
maxlength
Атрибут не работает с <input type="number">
. Это происходит только в Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
Из документации MDN для<input>
Если значение типа атрибута
text
,search
,password
,tel
, илиurl
, этот атрибут определяет максимальное количество символов (в точках кода Unicode) , которые пользователь может ввести; для других типов управления это игнорируется.
Так что maxlength
это игнорируется <input type="number">
дизайном.
В зависимости от ваших потребностей, вы можете использовать min
и max
атрибуты , как ИНОН предложил в его / ее ответ (NB: это будет определить только ограниченный диапазон, а не фактическую длину символа значения, хотя -9999 до +9999 будет охватывать все 0-4 цифры числа), или вы можете использовать обычный ввод текста и обеспечить проверку в поле с новым pattern
атрибутом:
<input type="text" pattern="\d*" maxlength="4">
type="number"
это новый тип из спецификации HTML 5. Если браузер вы тестируете в не признаетtype="number"
это будет относиться к ней , как ,type="text"
который делает уважатьmaxlength
атрибут. Это может объяснить поведение, которое вы видите.type=number
ввода, установивmax
атрибут. Этот атрибут ограничивает только число, выбранное счетчиком ввода.\d*
здесь?regex
и шаблон невероятно креативны. Но в мобильном телефоне, ничем не отличается,Android
илиiOS
этоtext
вход, поэтому он вызывает плохоUX
.Максимальная длина не будет работать с
<input type="number"
лучшим способом, который я знаю, это использоватьoninput
событие для ограничения максимальной длины. Пожалуйста, смотрите код ниже.источник
||0/1
oninput="this.value=this.value.slice(0,this.maxLength)"
должен работать<input type="number">
stackoverflow.com/questions/18510845/…Многие ребята опубликовали
onKeyDown()
событие, которое вообще не работает, т.е. вы не можете удалить его, как только достигнете предела. Так что вместоonKeyDown()
использованияonKeyPress()
и все работает отлично.Ниже работает код:
источник
number
тип ввода html5У меня есть два способа сделать это
Во-первых: используйте
type="tel"
, он будет работать какtype="number"
в мобильном телефоне, и принимать maxlength:Второе: используйте немного JavaScript:
источник
Вы можете использовать атрибуты min и max .
Следующий код делает то же самое:
источник
9999
пользователь может вручную ввести число, которое превышает эту длину.Измените тип ввода на текстовый и используйте событие oninput для вызова функции:
Теперь используйте Javascript Regex для фильтрации ввода пользователя и ограничьте его только числами:
Демо: https://codepen.io/aslami/pen/GdPvRY
источник
Однажды я попал в ту же проблему и нашел это решение с учетом моих потребностей. Кто-то может помочь.
Удачного кодирования :)
источник
Вы можете попробовать это также для числового ввода с ограничением длины
источник
tel
ввод будет автоматически проверяться как таковой, а в некоторых странных случаях ведущий0
s будет заменен на1
s.ДЕМО - JSFIDDLE
источник
Вот мое решение с JQuery ... Вы должны добавить maxlength к вашему типу ввода = число
И обрабатывать копировать и вставлять:
Надеюсь, это кому-нибудь поможет.
источник
this.value = this.value.slice(0, this.maxLength);
вы думаете, что это имеет какую-то проблему? Я не нашел пока что. Это также относится к вставленному тексту.По моему опыту, большинство вопросов, где люди спрашивают, почему
maxlength
игнорируется, заключается в том, что пользователю разрешено вводить больше, чем «разрешенное» количество символов.Как отмечалось в других комментариях,
type="number"
входные данные не имеютmaxlength
атрибута и вместо этого имеют атрибутmin
andmax
.Чтобы поле ограничивало количество символов, которое может быть вставлено, в то же время позволяя пользователю знать об этом до отправки формы (в противном случае браузер должен определить значение> max), вам придется (на данный момент, по крайней мере) добавить слушатель на поле.
Вот решение, которое я использовал в прошлом: http://codepen.io/wuori/pen/LNyYBM
источник
Я знаю, что ответ уже есть, но если вы хотите, чтобы ваш ввод вел себя точно так же, как
maxlength
атрибут или как можно ближе, используйте следующий код:источник
Chrome (технически Blink) не будет реализовывать maxlength для
<input type="number">
.Спецификация HTML5 гласит, что maxlength применимо только к типам text, url, e-mail, search, tel и password.
источник
Абсолютное решение, которое я только что попробовал:
источник
Я сделаю это быстро и легко понять!
Вместо maxlength для
type='number'
(maxlength предназначено для определения максимального количества букв для строки вtext
типе), используйтеmin=''
иmax=''
.ура
источник
<input type="number">
это просто ... ввод числа (хотя и не преобразованный из строки, которая передается через Javascript).Полагаю, это не ограничивает символы при вводе с клавиатуры,
maxLength
иначе ваш пользователь может застрять в «ловушке ключа», если он забыл десятичную дробь в начале (попробуйте поместить.
в индекс,1
когда<input type"text">
атрибут maxLength уже достигнут ). Однако он подтвердит отправку формы, если вы установитеmax
атрибут.Если вы пытаетесь ограничить / подтвердить номер телефона, используйте значение
type="tel"
attr / value. Он подчиняетсяmaxLength
attr и вызывает только клавиатуру мобильного номера (в современных браузерах), и вы можете ограничить ввод шаблоном (то естьpattern="[0-9]{10}"
).источник
Для пользователей React,
Просто замените 10 вашим максимальным требованием к длине
источник
maxlenght - тип ввода текста
используя jQuery:
maxlenght - номер типа ввода
JS
HTML
источник