ProgIngContrSystems

Матеріали дисципліни "Програмна інженерія в системах управління"

До розділу

Робота з формами

https://www.w3schools.com/html/html_forms.asp

Тег <form> встановлює форму на веб-сторінці. Форма призначена для обміну даними між користувачем і сервером. Область застосування форм не обмежена відправкою даних на сервер, за допомогою клієнтських скриптів можна отримати доступ до будь-якого елементу форми, змінювати його і застосовувати на власний розсуд. Документ може містити будь-яку кількість форм, але одночасно на сервер може бути відправлена тільки одна форма. З цієї причини дані форм повинні бути незалежні один від одного.

<form action="/formprocess">
  <label for="fname">First name:</label><br>
  <input type="text" id="fname" name="fname" value="John"><br>
  <label for="lname">Last name:</label><br>
  <input type="text" id="lname" name="lname" value="Doe"><br><br>
  <input type="submit" value="Надіслати">
</form>
<p>Якщо натиснути кнопку «Надіслати», дані форми будуть надіслані за url "/formprocess".</p> 





Якщо натиснути кнопку «Надіслати», дані форми будуть надіслані на сторінку під назвою "/formprocess".

Приклад подібної форми можна перевірити тут

Елемент form

Елемент HTML <form> використовується для створення HTML-форми для введення користувачами:

 <form>
 .
 *form elements*
 .
 </form>

Елемент <form> є контейнером для різних типів елементів введення, таких як: текстові поля, прапорці, перемикачі, кнопки надсилання тощо.

Атрибути форми

Ім’я атрибуту Призначення Демо Приклад
action означує дію, яка буде виконана під час надсилання форми. Зазвичай дані форми надсилаються у файл на сервері, коли користувач натискає кнопку відправки. Якщо атрибут action опущено, дію встановлюється для поточної сторінки. Посилання <form action="/action_page.php">
target означує, де відображати відповідь, отриману після надсилання форми. Атрибут target може мати одне з наведених нижче значень. Посилання <form action="/action_page.php" target="_blank">
method означує метод HTTP, який буде використовуватися під час надсилання даних форми (див нижче). Посилання get
Посилання post
<form action="/action_page.php" method="get">
autocomplete означує, увімкнути чи вимкнути автозаповнення у формі. Коли автозаповнення ввімкнено, браузер автоматично доповнює значення на основі значень, які користувач ввів раніше. Посилання <form action="/action_page.php" autocomplete="on">
novalidate Атрибут novalidate є логічним атрибутом. Якщо він присутній, він означує, що дані форми (вхідні дані) не повинні перевірятися під час надсилання. Посилання <form action="/action_page.php" novalidate>
accept-charset означує кодування символів, які використовуються для надсилання форми Посилання <form action="/action_page.php" accept-charset="utf-8">
enctype означує, як мають бути закодовані дані форми під час надсилання їх на сервер (лише для method=”post”) Посилання <form action="/action_page_binary.asp" method="post" enctype="multipart/form-data">
name означує назву форми Посилання <form action="/action_page.php" method="get" name="myForm">
rel означує зв’язок між пов’язаним ресурсом і поточним документом Посилання <form rel="*value*">

Target

Атрибут target означує, де відображати відповідь, отриману після надсилання форми. Атрибут target може мати одне з таких значень:

Value Description
_blank Відповідь буде показано в новому вікні або вкладці
_self Відповідь відображається в поточному вікні
_parent Відповідь відображається в батьківському фреймі
_top Відповідь відображається у всьому тілі вікна
framename Відповідь відображається в іменованому iframe

Значення за замовчуванням – _self, що означає, що відповідь відкриється в поточному вікні. Тут надісланий результат відкриється в новій вкладці браузера:

<form action="/action_page.php" target="_blank"> 

Method

Атрибут method означує метод HTTP, який буде використовуватися під час надсилання даних форми. Дані форми можна надіслати як змінні URL-адреси (з method="get") або як пост-транзакцію HTTP (з method="post"). Метод HTTP за замовчуванням під час надсилання даних форми — GET.

<form action="/action_page.php" method="get"> 
<form action="/action_page.php" method="post"> 

Примітки щодо GET:

  • Додає дані форми до URL-адреси в парах ім’я/значення
  • НІКОЛИ не використовуйте GET для надсилання конфіденційних даних! (надіслані дані форми видно в URL!)
  • Довжина URL-адреси обмежена (2048 символів)
  • Корисно для надсилання форм, коли користувач хоче додати результат до закладок
  • GET добре підходить для незахищених даних, таких як рядки запиту в Google

Примітки щодо POST:

  • Додає дані форми в тіло HTTP-запиту (надіслані дані форми не відображаються в URL-адресі)
  • POST не має обмежень за розміром і може використовуватися для надсилання великих обсягів даних.
  • Надсилання форм за допомогою POST не можна додавати в закладки

Порада: завжди використовуйте POST, якщо дані форми містять конфіденційну або особисту інформацію!

Спеціальні атрибути елементів форми

Ім’я атрибуту Призначення Демо Приклад
form Поле введення, розташоване поза формою HTML (але все ще є частиною форми), має мати атрибут form введення означує форму, до якої належить цей елемент <input>. Значення цього атрибута має дорівнювати атрибуту id елемента <form>, якому він належить. Посилання <form action="/action_page.php" id="form1"> <input type="submit" value="Submit"> </form> <input type="text" id="lname" name="lname" form="form1">
formaction атрибут <input> що означує URL-адресу файлу, який оброблятиме вхідні дані після надсилання форми. Цей атрибут замінює атрибут action елемента <form>. Атрибут formaction працює з такими типами введення: submit і image. Посилання <input type="submit" formaction="/action_page2.php" value="Submit as Admin">
formenctype атрибут <input> що означує, як мають бути закодовані дані форми під час надсилання (лише для форм із method=”post”). Цей атрибут замінює атрибут enctype елемента <form>. Атрибут formenctype працює з такими типами введення: submit і image. Посилання <input type="submit" formenctype="multipart/form-data" value="Submit as Multipart/form-data">
formmethod атрибут <input> що означує, метод HTTP для надсилання даних форми до URL-адреси дії. Цей атрибут перевизначає атрибут методу елемента <form>. Атрибут formmethod працює з такими типами введення: submit і image. Дані форми можна надіслати як змінні URL-адреси (method=”get”) або як транзакцію HTTP post (method=”post”). Посилання <input type="submit" formmethod="post" value="Submit using POST">
formtarget атрибут <input> що означує, назву або ключове слово, яке вказує, де відображати відповідь, отриману після надсилання форми. Цей атрибут замінює цільовий атрибут елемента <form>. Атрибут formtarget працює з такими типами введення: submit та image. Посилання <input type="submit" formtarget="_blank" value="Submit to a new window/tab">
formnovalidate атрибут <input> що означує, що елемент <input> не повинен перевірятися під час надсилання. Цей атрибут замінює атрибут novalidate елемента <form>. Атрибут formnovalidate працює з такими типами введення: submit. Посилання <input type="submit" formnovalidate="formnovalidate" value="Submit without validation">

Деталі

Елемент label

Зверніть увагу на використання елемента <label> у прикладі.

 <form>
     <label for="fname">First name:</label><br>
     <input   type="text" id="fname" name="fname"><br>
     <label for="lname">Last   name:</label><br>
     <input type="text" id="lname" name="lname">
</form> 

Тег <label> означує мітку для багатьох елементів форми. Елемент <label> корисний для користувачів програм зчитування з екрана, оскільки програма зчитування з екрана вголос читатиме мітку, коли користувач фокусується на елементі введення. Елемент <label> також допомагає користувачам, яким важко клацати дуже маленькі області (наприклад, перемикачі або прапорці), тому що коли користувач клацає текст в елементі <label>, він перемикає перемикач/прапорець .

Атрибут for тегу <label> має дорівнювати атрибуту id елемента <input>, щоб зв’язати їх разом.

Деталі

Елемент input

Елемент HTML <input> є найбільш використовуваним елементом форми. Елемент <input> може відображатися різними способами, залежно від атрибута type. Ось кілька прикладів:

Type Description
text Відображає однорядкове поле введення тексту. Приклад
radio Відображає перемикач (для вибору одного з багатьох варіантів) Приклад
checkbox Відображає прапорець (для вибору нуля або більше з багатьох варіантів) Приклад
submit Відображає кнопку надсилання (для надсилання форми) Приклад
button Відображає кнопку, яку можна натиснути Приклад
color використовується для полів введення, які мають містити колір. Приклад
date використовується для полів введення, які мають містити дату. Приклад1, Приклад з обмеженнями на введення
datetime-local визначає поле введення дати й часу без часового поясу. Приклад
email використовується для полів введення, які повинні містити адресу електронної пошти. Приклад
file означує поле вибору файлу та кнопку «Огляд» для завантаження файлів. Приклад
hidden означує приховане поле введення (не видиме для користувача). Приховане поле дозволяє веб-розробникам включати дані, які користувачі не можуть побачити або змінити під час надсилання форми. У прихованому полі часто зберігається запис бази даних, який потрібно оновити під час надсилання форми приклад.
image означає зображення як кнопку для надсилання. Приклад
month дозволяє користувачеві вибрати місяць і рік. Приклад
number означує числове поле введення. Ви також можете встановити обмеження на те, які числа приймаються. Приклад
password Для введення паролю Приклад
range означує елемент керування для введення числа, точне значення якого не є важливим (наприклад, повзунок). Діапазон за замовчуванням від 0 до 100. Приклад
reset означує кнопку скидання, яка скидає всі значення форми до значень за замовчуванням: Приклад
search використовується для полів пошуку (поле пошуку поводиться як звичайне текстове поле). Приклад
tel використовується для полів введення, які повинні містити номер телефону.Приклад
time дозволяє користувачеві вибрати час (без часового поясу). Приклад
url використовується для полів введення, які мають містити URL-адресу. Приклад
week дозволяє користувачеві вибрати тиждень і рік. Приклад

Деталі по елементу

Атрибут Name для input

Зауважте, що кожне поле введення повинно мати атрибут name для надсилання. Якщо атрибут name пропущено, значення поля введення не надсилатиметься взагалі. У цьому прикладі не надсилатиметься значення поля введення «First name»:

 <form action="/action_page.php">
 <label for="fname">First   name:</label><br>
 <input type="text" id="fname" value="John"><br><br>
   <input type="submit" value="Submit">
</form> 



Type Text

<input type="text"> означує однорядкове поле для введення тексту.

Приклад форми з полями для введення тексту:

 <form>
     <label for="fname">First name:</label><br>
     <input   type="text" id="fname" name="fname"><br>
     <label for="lname">Last   name:</label><br>
     <input type="text" id="lname" name="lname">
</form> 

Type Radio Buttons

Тип <input type="radio"> означує перемикач. Перемикачі дозволяють користувачеві вибрати ОДИН із обмеженої кількості варіантів.

<p>Choose your favorite Web language:</p>
<form>
  <input type="radio" id="html" name="fav_language" value="HTML">
  <label for="html">HTML</label><br>
  <input type="radio" id="css" name="fav_language" value="CSS">
  <label for="css">CSS</label><br>
  <input type="radio" id="javascript" name="fav_language" value="JavaScript">
  <label for="javascript">JavaScript</label>
</form> 

Наведений код матиме викгляд:

Choose your favorite Web language:



Type Checkboxes

Тип <input type="checkbox"> визначає прапорці. Прапорці дозволяють користувачеві вибрати НУЛЬ або БІЛЬШЕ варіантів з обмеженої кількості варіантів. Форма з прапорцями:

 <form>
 <input type="checkbox" id="vehicle1" name="vehicle1" value="Bike">
   <label for="vehicle1"> I have a bike</label><br>
 <input   type="checkbox" id="vehicle2" name="vehicle2" value="Car">
 <label for="vehicle2">   I have a car</label><br>
 <input type="checkbox"   id="vehicle3" name="vehicle3"   value="Boat">
 <label for="vehicle3"> I have a boat</label>
 </form> 


Type Submit Button

Тип <input type="submit"> визначає кнопку для надсилання даних форми обробнику форми. Обробник форми зазвичай є файлом на сервері зі сценарієм для обробки вхідних даних. Обробник форми вказується в атрибуті action форми. Форма з кнопкою відправки:

 <form action="/action_page.php">
 <label for="fname">First   name:</label><br>
 <input type="text" id="fname" name="fname"   value="John"><br>
 <label for="lname">Last name:</label><br>
   <input type="text" id="lname" name="lname" value="Doe"><br><br>
   <input type="submit" value="Submit">
</form> 





Type Number

<input type="number"> означує числове поле введення. Ви також можете встановити обмеження на те, які цифри приймаються. У наступному прикладі показано числове поле введення, куди можна ввести значення від 1 до 5:

 <form>
 <label for="quantity">Quantity (between 1 and   5):</label>
 <input type="number" id="quantity" name="quantity"   min="1" max="5">
</form> 

Спеціальні атрибути input

Ім’я атрибуту Призначення Демо Приклад
value означує початкове значення для поля введення Посилання <input type="text" id="fname" name="fname" value="John">
readonly вказує, що поле введення є лише для читання. Посилання <input type="text" id="fname" name="fname" value="John" readonly>
disabled вказує, що поле введення має бути вимкнене. Вимкнене поле введення непридатне для використання та на нього не можна натискати. Значення вимкненого поля введення не буде надіслано під час надсилання форми! Посилання <input type="text" id="fname" name="fname" value="John" disabled>
size означує видиму ширину поля введення в символах. Значення за замовчуванням для size — 20. Атрибут size працює з такими типами введення: text, search, tel, url, email, і password. Посилання <input type="text" id="fname" name="fname" size="50">
maxlength означує максимальну кількість символів, дозволену в полі введення. Якщо встановлено maxlength, поле введення не прийматиме більше ніж указану кількість символів. Однак цей атрибут не забезпечує зворотного зв’язку. Отже, якщо ви хочете попередити користувача, ви повинні написати код JavaScript. Посилання <input type="text" id="fname" name="fname" size="50">
min and max Атрибути означують мінімальне та максимальне значення для поля введення. Атрибути min і max працюють із такими типами введення: number, range, date, datetime-local, month, time і week. Використовуйте атрибути max і min разом, щоб створити діапазон допустимих значень. Посилання <input type="date" id="datemin" name="datemin" min="2000-01-02"> <input type="number" id="quantity" name="quantity" min="1" max="5">
multiple Атрибут input multiple вказує, що користувачеві дозволено вводити більше одного значення в поле введення. Атрибут multiple працює з такими типами введення: email та file. Посилання <input type="file" id="files" name="files" multiple>
pattern означує регулярний вираз, за яким перевіряється значення поля введення під час надсилання форми. Атрибут pattern працює з такими типами введення: text, date, search, url, tel, email і password. Використовуйте глобальний атрибут title, щоб описати шаблон, щоб допомогти користувачеві. Дізнайтеся більше про регулярні вирази у нашому посібнику з JavaScript. Посилання <input type="text" id="country_code" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code">
placeholder означує коротку підказку, яка описує очікуване значення поля введення (приклад значення або короткий опис очікуваного формату). Коротка підказка відображається в полі введення перед тим, як користувач введе значення. Атрибут placeholder працює з такими типами введення: text, search, url, tel, email і password Посилання <input type="tel" id="phone" name="phone" placeholder="123-45-678" pattern="[0-9]{3}-[0-9]{2}-[0-9]{3}">
required означує, що поле введення має бути заповнене перед надсиланням форми. Атрибут required працює з такими типами введення: text, search, url, tel, email, password, date pickers, number, checkbox, radio та file. Посилання <input type="text" id="username" name="username" required>
step означує допустимі інтервали чисел для поля введення. Приклад: якщо step=”3”, дозволені числа можуть бути -3, 0, 3, 6 тощо. Цей атрибут можна використовувати разом із атрибутами max і min для створення діапазону допустимих значень. Атрибут step працює з такими типами введення: number, range, date, datetime-local, month, time та week Посилання <input type="number" id="points" name="points" step="3">
autofocus вказує, що поле введення має автоматично отримувати фокус під час завантаження сторінки. Посилання <input type="text" id="fname" name="fname" autofocus>
height and width означують висоту та ширину елемента <input type="image">. Завжди вказуйте як атрибути висоти, так і ширини для зображень. Якщо встановлено висоту та ширину, місце, необхідне для зображення, резервується під час завантаження сторінки. Без цих атрибутів браузер не знає розміру зображення та не може зарезервувати для нього відповідний простір. В результаті макет сторінки буде змінюватися під час завантаження (під час завантаження зображень). Посилання <input type="image" src="img_submit.gif" alt="Submit" width="48" height="48">
list відноситься до елемента <datalist>, який містить попередньо означені параметри для елемента <input> Посилання <input list="browsers"> <datalist id="browsers"> <option value="Internet Explorer"> <option value="Firefox"> <option value="Chrome"> </datalist>
autocomplete означує, увімкнути чи вимкнути автозаповнення для форми чи поля введення. Автозаповнення дозволяє браузеру передбачити значення. Коли користувач починає вводити текст у поле, браузер має відобразити варіанти заповнення поля на основі раніше введених значень. Атрибут autocomplete працює з <form> і такими типами <input>: text, search, url, tel, email, password, datepickers, range і color. Посилання <form action="/action_page.php" autocomplete="on"> <input type="email" id="email" name="email" autocomplete="off">
       

Ось список деяких поширених обмежень щодо введення:

Attribute Description
checked Вказує, що поле введення має бути попередньо вибрано під час завантаження сторінки (для type=”checkbox” або type=”radio”)
disabled Вказує, що поле введення має бути вимкнене
max Specifies the maximum value for an input field
maxlength Specifies the maximum number of character for an input field
min Specifies the minimum value for an input field
pattern Specifies a regular expression to check the input value against
readonly Specifies that an input field is read only (cannot be changed)
required Specifies that an input field is required (must be filled out)
size Specifies the width (in characters) of an input field
step Specifies the legal number intervals for an input field
value Specifies the default value for an input field

У наступному прикладі показано числове поле введення, куди можна ввести значення від 0 до 100 із кроком 10. Значення за замовчуванням — 30:

<form>
    <label for="quantity">Quantity:</label>
    <input   type="number" id="quantity" name="quantity" min="0" max="100" step="10"   value="30">
</form> 

Елемент select

Елемент <select> означує розкривний список:

<label for="cars">Choose a car:</label>
<select id="cars" name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select> 

Елемент <option> означує параметр, який можна вибрати. За замовчуванням вибрано перший пункт у розкривному списку. Щоб визначити попередньо вибрану опцію, додайте до неї атрибут selected:

 <option value="fiat" selected>Fiat</option> 

Використовуйте атрибут size, щоб вказати кількість видимих значень:

<label for="cars">Choose a car:</label>
<select id="cars" name="cars" size="3">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select> 

Використовуйте атрибут multiple, щоб дозволити користувачеві вибрати більше одного значення:

<label for="cars">Choose a car:</label>
<select id="cars" name="cars" size="4" multiple>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select> 

Деталі

Елемент textarea

Елемент <textarea> означує багаторядкове поле введення (текстова область). Атрибут rows визначає видиму кількість рядків у текстовій області. Атрибут cols визначає видиму ширину текстової області.

<textarea name="message" rows="10" cols="30">
	The cat was playing in the garden.
</textarea>

You can also define the size of the text area by using CSS:

<textarea name="message"   style="width:200px; height:200px;">
	The cat was playing in the garden.
</textarea> 

Деталі

Елемент button

Елемент <button> означує кнопку, яку можна натиснути:

<button type="button"  onclick="alert('Hello World!')">Click Me!</button>

Примітка: завжди вказуйте атрибут type для елемента кнопки. Різні браузери можуть використовувати різні типи за замовчуванням для елемента кнопки.

Деталі

Елементи fieldset і legend

Елемент <fieldset> використовується для групування пов’язаних даних у формі. Елемент <legend> означує заголовок для елемента <fieldset>.

<form action="/action_page.php">
    <fieldset>
        <legend>Personalia:</legend>
        <label for="fname">First   name:</label><br>
        <input type="text" id="fname" name="fname"   value="John"><br>
        <label for="lname">Last name:</label><br>
        <input type="text" id="lname" name="lname" value="Doe"><br><br>
        <input type="submit" value="Submit">
    </fieldset>
</form>  
Personalia:




Деталі filedset

Деталі legend

Елемент datalist

Елемент <datalist> означує список попередньо означених параметрів для елемента <input>. Під час введення даних користувачі бачитимуть розкривний список із попередньо означеними параметрами. Атрибут list елемента <input> має посилатися на атрибут id елемента <datalist>.

<form action="/action_page.php">
    <input list="browsers">
    <datalist id="browsers">
        <option value="Internet Explorer">
        <option value="Firefox">
        <option value="Chrome">
        <option value="Opera">
        <option value="Safari">
    </datalist> 
</form>