3.1. Форми. Текстові поля
Форми є невід'ємною частиною Інтернету, тому що пропонують сайтам метод збору інформації від користувачів і обробки запитів, а також елементи управління практично для будь-якого можливого застосування. За допомогою елементів управління або полів, форми можуть запросити невеликий обсяг інформації − часто це пошуковий запит, ім'я користувача або пароль, або великий обсяг інформації − можливо, дані про посилку, платіжна інформація або пропозиція роботи.
Ми повинні знати, як створювати форми, щоб отримати вхідні дані від користувача. У цьому розділі ми обговоримо, як використовувати HTML для розмітки форми, які елементи використовувати для захоплення різних типів даних. Ми не станемо занадто заглиблюватися в те, як інформація з форми обробляється на стороні сервера. Обробка форм являє собою глибоку тему, поза сферою цього посібника; тут ми будемо дотримуватися тільки створення форм.
Iніціалізація форми
Щоб додати форму на сторінку ми будемо використовувати елемент <form>
. Даний елемент визначає, де на сторінці з'являться елементи управління. Крім того, елемент <form>
обгортає всі елементи включені в форму, подібно елементу <div>
.
<form action="/login" method="post"> ... </form>
До елементу <form>
може застосовуватися декілька різних атрибутів, найбільш поширеними з яких є action
і method
. Атрибут action
містить URL, на який інформація у формі буде відправлена для обробки сервером. Атрибут method
є методом HTTP, який повинні використовувати браузери для відправки даних форми. Обидва ці атрибута <form>
мають відношення до відправки і обробки даних.
Атрибут method
має два значення − get
і post
.
get
− є одним з найпоширеніших методів і призначений для отримання необхідної інформації та передачі даних в адресному рядку. Пари «ім'я = значення» приєднуються в цьому випадку до адреси після знаку питання і розділяються між собою амперсандом (символ &). Зручність використання методу get
полягає в тому, що адресу з усіма параметрами можна використовувати неодноразово, зберігши її, наприклад, в закладки браузера, а також змінювати значення параметрів прямо в адресному рядку. Це значення встановлено для атрибута method
за замовчуванням.post
− метод, який посилає на сервер дані в запиті браузера. Це дозволяє відправляти більшу кількість даних, ніж за методом get
, оскільки у нього встановлено обмеження в 4 Кб. Великі обсяги даних використовуються у форумах, поштових службах, заповненні бази даних, при пересиланні файлів тощо.
Текстові поля і текстові області
Коли справа доходить до збору текстової інформації від користувачів, є кілька різних елементів, доступних для отримання даних в формах. Зокрема, для збору даних на основі тексту або рядків застосовуються текстові поля і текстові області. Ці дані можуть включати в себе уривки тексту, паролі, номери телефонів та іншу інформацію.
Текстові поля
Одним з основних елементів, які використовуються для отримання тексту від користувачів, є елемент <input>
. Даний елемент включає атрибут type
для визначення, який тип інформації буде отримано в елементі управління. Найбільш популярне значення атрибута type
− це text
, який позначає введення одного рядка тексту.
Поряд з установкою атрибута type
, гарною практикою буде також дати елементу <input>
атрибут name
. Значення атрибута name
застосовується в якості імені елементу управління і відправляється разом з вхідними даними на сервер.
name
− ім'я поля, призначене для того, щоб обробник форми міг його ідентифікувати.disabled
− блокує поле для введення тексту і не відправляє дані на сервер.form
− ідентифікатор форми для зв'язування текстового поля з елементом <form>
.
type
− перелік значень для текстого поля, який наведено далі.maxlength
− встановлює максимальне число символів, яке може бути введено користувачем у текстовому полі. Коли ця кількість досягається при наборі, подальше введення стає неможливим. Якщо даний атрибут опустити, то можна вводити рядок довший ніж саме поле.readonly
− блокує поле для введення тексту.size
− ширина текстового поля, яка визначається числом символів моноширинного шрифту. Зазвичай не вказують, тому що через стилі задати бажані розміри простіше і точніше.value
− початковий текст, який відображається в полі.autocomplete
− введений раніше текст запам'ятовується браузером і підставляється при наступному введенні.autofocus
− поле отримує фокус після завантаження документа.list
− значення атрибута id
елемента <datalist>
, для зв'язку з цим елементом.pattern
− шаблон введення тексту. Вказує регулярні вирази, відповідно до яких треба вводитти і відправляти дані форми.required
− вказує, що поле є обов'язковим для заповнення.placeholder
− додає підказку, яка зникає при введенні тексту.dirname
− ім'я змінної, яка відправляється на сервер і автоматично отримує значення ltr
(для тексту зліва направо) або rtl
(для тексту справа наліво).Більшість атрибутів є типовими і застосовуються і до інших елементів форми. Деякі атрибути ми докладніше розглянемо в наступних уроках. Створення текстового поля показано в наступному прикладі.
Приклад: Текстове поле
<form action="/login" method="post"> <input type="text" name="username" placeholder="login" maxlength="25" size="40" > </form>Переглянути Редагувати
Елемент <input>
є самостійним, тобто він задіє тільки один тег і не обертає ніякого контенту. Значення елемента забезпечується його атрибутами і їх відповідними значеннями.
Спочатку було тільки два текстових значення атрибута type
− text
і password
(для введення паролів), проте стандарт HTML5 додав кілька нових значень атрибута type
.
Ці значення були додані, щоб забезпечити чітке смислове значення для полів вводу, а також надати краще управління користувачам. Якщо браузер не розуміє одне з цих HTML5-значень атрибута type
, він автоматично повернеться до значення text
. На наступному рисунку наведено список нових типів HTML5 та декілька прикладів.
Для елемента <input>
є прості правила, яких слід дотримуватися:
<input>
не можна вкладати всередину посилання <a>
;<input>
не можна вкладати всередину кнопки <button>
;list
повинен посилатися на елемент <datalist>
.
Елемент <datalist>
дозволяє створити список підказок, який з'являється при наборі тексту. Подібне можна спостерігати в пошуковій системі Google, коли вводиться пошуковий запит.
<datalist>
пишеться зазвичай за межами форми, кожен пункт при цьому створюється елементом <option>
, а потім отриманий список зв'язується з текстовим полем за допомогою атрибута list
, значенням якого виступає значення id
у <datalist>
(дивіться наступний приклад).
Приклад: Підказки для текстового поля
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Підказки</title> </head> <body> <form> <p><strong>Уведіть ваше місто</strong></p> <p><input name="city" list="city"></p> </form> <datalist id="city"> <option>Апостолове</option> <option>Верхівцеве</option> <option>Верхньодніпровськ</option> <option>Вільногірськ</option> <option>Дніпро</option> <option>Жовті Води</option> <option>Зеленодольськ</option> <option>Кам'янське</option> <option>Кривий Ріг</option> <option>Марганець</option> <option>Нікополь</option> <option>Новомосковськ</option> <option>П'ятихатки</option> <option>Павлоград</option> <option>Перещепине</option> <option>Першотравенськ</option> <option>Підгородне</option> <option>Покров</option> <option>Синельникове</option> <option>Тернівка</option> </datalist> </body> </html>Переглянути
При наборі перших букв показуються відповідні варіанти зі списку. Пункт списку можна вибрати курсором миші або за допомогою стрілок на клавіатурі і він буде доданий в текстове поле. При цьому можна вводити власний текст або редагувати вже доданий.
Текстові області
Ще одним елементом, який використовувується для збору текстових даних, є елемент <textarea>
. Він відрізняється від елемента <input>
тим, що може приймати великі уривки тексту в декілька рядків. Елемент <textarea>
також містить відкриваючий і закриваючий теги, які можуть обернути простий текст, який буде відображено у текстовому полі. При цьому у браузері буде відображено усі пробіли та переноси, які є у html-коді. Оскільки <textarea>
приймає тільки один тип значення, атрибут type
тут не застосовують, але атрибут name
використовується як і раніше.
Для <textarea>
діють ті ж обмеження, що і для <input>
.
Окрім атрибутів, які <textarea>
використовує як і елемент <input>
, можливе використання наступних атрибутів:
<rows>
− висота поля в рядках тексту.<wrap>
− значення soft
передає на сервер текст одним рядком, а hard враховує значення cols
і автоматично додає переноси.<cols>
− ширина поля в символах.
Як правило, розміри <textarea>
задаються за допомогою стилів, але якщо одночасно задані атрибути rows
і cols
з шириною і висотою через CSS, то стилі мають перевагу і значення атрибутів ігнорується.
Приклад: Текстова область
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Текстова область</title> </head> <body> <form action="comment.php" method="post"> <p><strong>Уведіть ваш коментар:</strong></p> <p><textarea name="comment"></textarea></p> <p><input type="submit"></p> </form> </body> </html>Переглянути Редагувати
<textarea>
та <input>
.