Как ограничить количество символов в input html
Перейти к содержимому

Как ограничить количество символов в input html

  • автор:

Атрибут maxlength

Устанавливает максимальное число символов, которое может быть введено пользователем в текстовом поле. Когда это количество достигается при наборе, дальнейший ввод становится невозможным.

Атрибут maxlength может добавляться только к полю формы, у которого type имеет одно из значений: text , password , search , url , tel , email .

Синтаксис

Значения

Любое целое положительное число.

Значение по умолчанию

Ввод символов не ограничен.

Пример

INPUT, атрибут maxlength

Браузеры

3 12 1 4 1 1

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.

Как ограничить количество символов в input number в пределах от 0 до 999.999?

По сути, max и min это валидаторы. Но они никак не ограничивают ввод с клавиатуры и простой копи-паст.

Воспользуйтесь простым обработчиком события и через JS установите минимальное/максимальное значение при выходе за лимиты.

const inputs = document.querySelectorAll('input[type=number]'); Array.from(inputs).forEach(input => < const min = +input.min; const max = +input.max; input.addEventListener('input', (e) => < const value = +input.value; if (value >max) < input.value = max >else if (value < min) < input.value = min >> >)); 

Отслеживать
ответ дан 12 мая 2020 в 15:09
1,833 1 1 золотой знак 7 7 серебряных знаков 9 9 бронзовых знаков

Мне еще нужно ограничить число до тысячных. К примеру нужно что бы пользователь мог ввести 5.999, 66.111, 110,1. Не подскажите как сделать это?

12 мая 2020 в 15:15
можно использовать Math.round на значение. Math.round(value * 1000) / 1000
12 мая 2020 в 15:18

Спасибо. Еще бы один моментик подсказали и ситуация будет спасена. Есть ли возможность разделить дробную и целую часть точкой, а не запятой?

12 мая 2020 в 15:52

Когда вы вводите вручную, input понимает и . и , в качестве разделителя. Если пользуетесь button-controls для изменения, значение будет выдавать , . Если это прям кровь из носу точку надо, то лучше использовать type=»text» парсить по разделителю , типа input.value = » + value.split(‘,’).join(‘.’) . В этом случае, валидаторы min/max — это просто болванки, которые работать не будут. Ну и button-controls вы не увидите

Атрибуты minlength и maxlength

Как задать минимальное и максимальное количество символов, которое принимает поле?

Время чтения: меньше 5 мин

Открыть/закрыть навигацию по статье

  • Юрий Четвериков ,
  • Татьяна Фокина

Контрибьюторы:

Обновлено 21 ноября 2023

Кратко

Скопировать ссылку «Кратко» Скопировано

Атрибуты minlength и maxlength устанавливают минимальное и максимальное количество символов, которые можно ввести в поля или .

Пример

Скопировать ссылку «Пример» Скопировано

В этом примере в можно ввести минимум 4 символа и максимум 8, а в — минимум 50 и максимум 1000.

  input minlength="4" maxlength="8"> textarea minlength="50" maxlength="1000">      

Теперь создадим поле с паролем и ограничим количество допустимых символов:

   Введите пароль (от 8 до 16 символов):   type="password" name="password" minlength="8" maxlength="16" required> label for="password"> Введите пароль (от 8 до 16 символов): label> input type="password" id="password" name="password" minlength="8" maxlength="16" required >      

Как пишется

Скопировать ссылку "Как пишется" Скопировано

Значения для minlength и maxlength — целые числа от 0 и выше. К примеру, 0 , 14 или 1000 . Если не указать значение или задать его неверно, у поля не будет ограничений по длине. Также значение maxlength не может быть меньше значения minlength . Поле всегда будет заполнено неправильно, если максимальное значение меньше минимального.

Браузеры используют кодировку UTF-16 для расчёта длины поля. Это значит, что длина равна количеству символов в случае букв, чисел и знаков. Например, если задали minlength = "3" , то поле с введёнными abc и 123 соответствуют минимальному ограничению по символам.

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

Валидация

Скопировать ссылку "Валидация" Скопировано

В JavaScript есть специальный интерфейс Validity State , который даёт доступ к проверке полей. С помощью свойств too Long и too Short можно проверять длину поля с атрибутами minlength и maxlength . Оба свойства возвращают true , если пользователь ввёл слишком много или слишком мало символов, и false , когда введённые данные правильной длины. Форму лучше валидировать после нажатия на кнопку для отправки данных.

Странности с

Скопировать ссылку "Странности с input type="number"" Скопировано

Когда задаёте ограничения по длине полю с типом number , атрибуты minlength и maxlength не ограничивают минимальное и максимальное количество символов, которое можно ввести с клавиатуры.

Попробуйте ввести в этой демке больше, чем 3 цифры.

   Выберите количество (максимум 999):  type="number" min="1" max="999" maxlength="3" > label for="items"> Выберите количество (максимум 999): label> input type="number" min="1" max="999" maxlength="3" id="items" >      

Чтобы обойти странность, используйте JavaScript или регулярные выражения. К примеру, в это поле можем ввести только 3 символа благодаря обработке события on Key Press . Когда попытаетесь ввести больше символов, скрипт просто не даст это сделать.

   Выберите количество (максимум 999):  type="number" pattern="\d+" min="1" max="999" onKeyPress="if(this.value.length === 3) return false"> label for="items"> Выберите количество (максимум 999): label> input type="number" id="items" pattern="\d+" min="1" max="999" onKeyPress="if(this.value.length === 3) return false" >      

Стилизация

Скопировать ссылку "Стилизация" Скопировано

Поля с неправильными данными можно стилизовать через псевдоклассы :invalid или :user - invalid для всех полей или :out - of - range для полей с type = "number" .

Добавляйте к неправильно заполненным полям не только цветную обводку и заливку, но и иконку, а также текстовое описание ошибки.

К полю, стилизованному через :invalid , стили применятся в пустом состоянии и в состоянии, когда в него ввели неправильное количество символов.

 input:invalid  border-color: #2E9AFF; background-color: rgb(46, 154, 255, 0.1); outline: none;> input:invalid  border-color: #2E9AFF; background-color: rgb(46, 154, 255, 0.1); outline: none; >      

Стили из :user - invalid применятся к полю только тогда, когда пользователь ввёл неверное количество символов и при этом начал взаимодействовать с другими элементами на странице.

 input:user-invalid  border-color: #2E9AFF; background-color: rgb(46 154 255 / 0.1); outline: none;> input:user-invalid  border-color: #2E9AFF; background-color: rgb(46 154 255 / 0.1); outline: none; >      

Атрибут minlength

Задаёт минимальное число символов, которое может быть введено пользователем в текстовом поле. Если число символов меньше указанного значения, то браузер выдаёт сообщение об ошибке и не отправляет форму.

Синтаксис

Значения

Любое целое положительное число.

Значение по умолчанию

Пример

Браузеры

17 40 27 10.1 51
40 51 27 10.3

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *