<input type="text">
Елементи <input>
типу text
створюють базові однорядкові текстові поля.
Спробуйте його в дії
Значення
Атрибут value
– це рядок, що містить поточне значення тексту, введеного в текстове поле. Його можна отримати в JavaScript за допомогою властивості HTMLInputElement
value
.
let theText = myTextInput.value;
Якщо на поле не накладені обмеження валідації (дивіться більше подробиць в валідації), то значення може бути порожнім рядком (""
).
Додаткові атрибути
На додачу до атрибутів, що діють на всіх елементах <input>
, незалежно від їх типу, текстові поля підтримують наступні.
list
Значення атрибута list – це id
елемента <datalist>
, розташованого в тому самому документі. Елемент <datalist>
надає список наперед визначених значень, що пропонуються користувачем для поля. Всі значення, що несумісні з type
, не включаються в список запропонованих варіантів. Ці варіанти є пропозиціями, а не обов'язковими: користувачі можуть як обирати серед них, так і ввести інше значення.
maxlength
Максимальна довжина рядка (в кодових одиницях UTF-16), котрий користувач може ввести в поле text
. Це повинно бути ціле числове значення, 0 або більше. Якщо не задано maxlength
, або якщо задано недійсне значення, то поле text
не має максимальної довжини. Це значення також повинно бути більшим або рівним значенню minlength
.
Поле не пройде валідацію обмежень, якщо довжина введеного в поле тексту перевищує maxlength
кодових одиниць UTF-16 завдовжки. Валідація обмежень застосовується лише тоді, коли значення змінює користувач.
minlength
Мінімальна довжина рядка (в кодових одиницях UTF-16), котрий користувач може ввести в поле text
. Це повинно бути невід'ємне ціле числове значення, менше або рівне значенню, заданому maxlength
. Якщо не задано minlength
, або якщо задано недійсне значення, то пошукове поле не має мінімальної довжини.
Пошукове поле не пройде валідацію обмежень, якщо довжина введеного в поле тексту – менша за minlength
кодових одиниць UTF-16 завдовжки. Валідація обмежень застосовується лише тоді, коли значення змінює користувач.
pattern
Атрибут pattern
, коли заданий, є регулярним виразом, котрому повинно відповідати value
, щоб пройти валідацію обмежень. Це повинен бути дійсний регулярний вираз JavaScript, подібний до тих, що використовуються типом RegExp
, і що задокументовані в нашому посібнику з регулярних виразів; при компіляції регулярного виразу задається позначка 'u'
, тож патерн обробляється як послідовність кодових точок Unicode, а не як ASCII. На кінцях тексту патерну не повинно бути скісних рисок.
Якщо заданий патерн – не заданий або недійсний, то регулярний вираз не застосовується, і цей атрибут цілком ігнорується.
[!NOTE] Слід використовувати атрибут
title
, щоб задати текст, котрий більшість браузерів показує як підказку, для пояснення того, яким вимогам повинен відповідати текст, аби відповідати патерну. Також слід додати інший пояснювальний текст поруч.
Дивіться деталі та приклад у розділі Задання патерну.
placeholder
Атрибут placeholder
– це рядок, що надає користувачам стислу підказку щодо того, якого роду інформація очікується в полі. Це повинно бути слово або коротка фраза, що показує очікуваний тип даних, а не пояснювальне повідомлення. Такий текст не повинен містити повернення каретки або розриву рядка.
Якщо вміст контрольного елемента має один напрям письма (зліва направо або справа наліво), а заповнювач треба показати в іншому напрямі, то можна використати в заповнювачі символи двонапрямленого алгоритму форматування Unicode; більше інформації у статті Як використовувати контрольні символи Unicode у двонапрямленому тексті.
[!NOTE] Уникайте використання атрибута
placeholder
, якщо це можливо. Він є менш семантично корисним, ніж інші способи пояснення форми, і може призводити до неочікуваних технічних проблем зі вмістом. Більше інформації в занепокоєннях щодо доступності<input>
.
readonly
Булів атрибут, котрий, якщо присутній, означає, що користувач не може редагувати поле. Проте value
цього поля усе ж може бути змінено кодом JavaScript, шляхом безпосереднього присвоєння властивості value
об'єкта HTMLInputElement
.
[!NOTE] Оскільки таке поле не може мати значення,
required
не діє на поля, на котрих також задано атрибутreadonly
.
size
Атрибут size
– це числове значення, що вказує на те, якої ширини в символах повинно бути поле введення. Значення цього атрибута повинно бути числом, більшим за нуль, а усталене значення – 20. Оскільки розмір символів буває різний, така ширина може бути, а може й не бути точною, і на її розмірність не варто покладатися; результівне поле може бути вужчим або ширшим за задану кількість символів, залежно від самих цих символів та шрифту (застосованих налаштувань font
).
Це не задає обмеження того, скільки символів користувач може ввести в поле. Це лише приблизно задає те, скільки символів водночас буде видно. Аби задати верхню межу довжини введених даних, слід використовувати атрибут maxlength
.
spellcheck
Глобальний атрибут spellcheck
використовується для позначення того, чи потрібно вмикати для елемента перевірку правопису. Він може використовуватись на будь-якому редагованому вмісті, але тут розглядається специфіка, що стосується застосування spellcheck
до елементів <input>
. Дозволені значення spellcheck
:
false
Вимкнути перевірку правопису для цього елемента.
true
Ввімкнути перевірку правопису для цього елемента.
- "" (порожній рядок) або без значення
Виконувати усталену поведінку елемента щодо перевірки правопису. Ця усталена поведінка може залежати від налаштування
spellcheck
батьківського елемента та інших чинників.
Поле введення може мати ввімкнену перевірку правопису, якщо не має атрибута readonly і не є вимкненим.
Значення, повернене при зчитуванні spellcheck
, може не відповідати реальному станові перевірки правопису на контрольному елементі, якщо налаштування користувацького агента відкидають власне налаштування елемента.
Нестандартні атрибути
Пошуковим полям введення доступні наступні нестандартні атрибути. Як правило, слід уникати їх використання, якщо це можливо.
autocorrect
Атрибут autocorrect
, розширення Safari, це рядок, що позначає вмикання автоматичного виправлення при редагуванні поля користувачем. Дозволені значення:
on
Ввімкнути автоматичне виправлення хибодруків, а також обробку текстових замін, якщо вони налаштовані.
off
Вимкнути автоматичне виправлення та текстові заміни.
Застосування текстових полів
Елементи <input>
типу text
утворюють базові однорядкові поля. Їх слід використовувати всюди, де необхідно, аби користувачі вводили однорядкові значення, і де немає більш специфічного типу поля для збору таких значень (наприклад, якщо це дата, URL, електронна пошта чи пошуковий запит, то доступні кращі варіанти).
Базовий приклад
<form>
<div>
<label for="uname">Оберіть ім'я користувача: </label>
<input type="text" id="uname" name="name" />
</div>
<div>
<button>Подати</button>
</div>
</form>
Це візуалізується так:
При поданні пара даних ім'я-значення буде name=Chris
(якщо перед поданням як значення поля було введено "Chris"). Необхідно завжди пам'ятати додавати до елемента <input>
атрибут name
: інакше значення текстового поля не буде включено в подані дані.
Задання заповнювачів
Всередині текстового поля можна дати змістовний заповнювач, котрий служитиме підказкою щодо того, що з полем робити, за допомогою атрибута placeholder
. Погляньте на наступний приклад:
<form>
<div>
<label for="uname">Оберіть ім'я користувача: </label>
<input
type="text"
id="uname"
name="name"
placeholder="Малими літерами, одним словом" />
</div>
<div>
<button>Подати</button>
</div>
</form>
Те, як візуалізується заповнювач, – нижче:
Зазвичай заповнювач візуалізується світлішим кольором за головний колір елемента, і автоматично зникає, коли користувач починає вводити в поле текст (або тоді, коли поле отримує значення програмно – шляхом задання його атрибута value
).
Фізичний розмір елемента введення
Фізичний розмір поля введення можна контролювати за допомогою атрибута size
. Так можна задавати число символів, котре водночас може показувати поле. Це впливає на ширину елемента, даючи змогу задати ширину в символах, а не в пікселях. У цьому прикладі, скажімо, пошукове поле – 30 символів завширшки:
<form>
<div>
<label for="uname">Оберіть ім'я користувача: </label>
<input
type="text"
id="uname"
name="name"
placeholder="Малими літерами, одним словом"
size="30" />
</div>
<div>
<button>Подати</button>
</div>
</form>
Валідація
Елементи <input>
типу text
не отримують автоматичної валідації (адже базове текстове поле повинно мати змогу приймати будь-які рядки), однак доступні певні варіанти клієнтської валідації, описані нижче.
[!NOTE] Валідація форм HTML не є замінником серверних сценаріїв, котрі пересвідчуються, що введені дані мають відповідний формат. Кому завгодно занадто легко внести зміни в HTML, котрі дозволять обійти валідацію чи взагалі її усунути. Також можливо, що хтось обійде HTML взагалі й подасть дані напряму на сервер. Якщо серверний код не справляється з валідацією отриманих даних, може трапитись лихо, коли подаються невідповідно форматовані дані (або дані, що є завеликими, мають помилковий тип і так далі).
Примітка щодо оформлення
Існують корисні псевдокласи, доступні для оформлення елементів форми, щоб допомагати користувачам бачити, чи є їхні значення дійсними, чи недійсними. Це :valid
та :invalid
. У цьому розділі використовується наступний CSS, що розташовує позначку (галку) після полів, що містять дійсні значення, та хрестик (Х) після полів, що містять недійсні.
div {
margin-bottom: 10px;
position: relative;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "✖";
padding-left: 5px;
}
input:valid + span::after {
position: absolute;
content: "✓";
padding-left: 5px;
}
Ця техніка також вимагає розташування після елемента форми елемента <span>
, що працює як тримач піктограм. Це необхідно, тому що частина типів полів у певних браузерах не показує піктограм, розташованих зразу після них, достатньо добре.
Обов'язковість заповнення поля
Атрибут required
можна використати як легкий спосіб зробити введення значення в поле обов'язковим перед дозволом на подання:
<form>
<div>
<label for="uname">Оберіть ім'я користувача: </label>
<input type="text" id="uname" name="name" required />
<span class="validity"></span>
</div>
<div>
<button>Подати</button>
</div>
</form>
Це візуалізується так:
Якщо спробувати подати форму, в яку не введено пошуковий запит, то браузер покаже повідомлення про помилку.
Довжина значення поля
Мінімальну довжину (в символах) уведеного значення можна задати за допомогою атрибута minlength
; подібно до цього – є maxlength
для задання максимальної довжини, так само в символах.
Приклад нижче вимагає, щоб уведене значення було 4-8 символів завдовжки.
<form>
<div>
<label for="uname">Оберіть ім'я користувача: </label>
<input
type="text"
id="uname"
name="name"
required
size="10"
placeholder="Ім'я користувача"
minlength="4"
maxlength="8" />
<span class="validity"></span>
</div>
<div>
<button>Подати</button>
</div>
</form>
Це візуалізується так:
Якщо спробувати подати форму з менш ніж 4 символами, то буде показано відповідне повідомлення про помилку (котре відрізняється в різних браузерах). Якщо спробувати ввести понад 8 символів, то браузер не дасть цього зробити.
[!NOTE] Якщо задати
minlength
, але не задатиrequired
, то поле вважається дійсним, адже користувач не зобов'язаний задавати значення.
Задання патерну
Для задання регулярного виразу, котрому повинно відповідати введене значення, аби вважатися дійсним, можна використати атрибут pattern
(дивіться простий експрес-курс використання регулярних виразів для валідування введення у Валідуванні за регулярним виразом).
Приклад нижче обмежує значення 4-8 символами та вимагає, щоб воно містило лише малі літери.
<form>
<div>
<label for="uname">Оберіть ім'я користувача</label>
<input
type="text"
id="uname"
name="name"
required
size="45"
pattern="[a-z]{4,8}" />
<span class="validity"></span>
<p>
Імена користувачів повинні складатися з малих літер та бути 4-8 символів
завдовжки.
</p>
</div>
<div>
<button>Подати</button>
</div>
</form>
Це візуалізується так:
Приклади
Добрі приклади текстових полів, використаних в контексті, можна побачити в наших статтях Ваша перша форма HTML та Як впорядкувати форму HTML.
Технічний підсумок
Значення | Рядок, що представляє текст, вміщений в текстовому полі. | |
Події |
change та
input
|
|
Доступні спільні атрибути |
autocomplete ,
list ,
maxlength ,
minlength ,
pattern ,
placeholder ,
readonly ,
required і
size
|
|
Атрибути IDL | list , value |
|
Інтерфейс DOM | ||
Методи |
select() ,
setRangeText()
і
setSelectionRange() .
|
|
Неявна роль ARIA | без атрибута list :
textbox |
з атрибутом list : combobox |
Специфікації
Сумісність із браузерами
desktop | mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
type="text"
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support Так | Opera Full support Так | Safari Full support 1 | WebView Android Full support Так | Chrome Android Full support Так | Firefox for Android Full support 4 | Opera Android Full support Так | Safari on iOS Full support Так | Samsung Internet Full support Так |
Дивіться також
- Форми HTML
<input>
таHTMLInputElement
– база для текстових полів.<input type="search">
<textarea>
– багаторядкове текстове поле- Сумісність властивостей CSS