HTML та CSS для початківців

HTML & CSS для початківців (Частина 17): Форми (5)

Усі відео з уроку HTML та CSS для початківців.

Функція автозаповнення вже давно є бажаним функціоналом в Інтернеті. Якщо ви вводите щось у поле форми, браузери - якщо функція увімкнена та підтримується браузером - пропонують список варіантів слів.

HTML та CSS для початківців (Частина 17): Форми (5)

Такі застосування тепер можна дуже легко втілити. Для цього потрібно призначити елементу input атрибут autocomplete.

<input type="text" autocomplete="on" />



Значення on активує автозаповнення для поля. Відтепер браузер запам'ятовуватиме введені у поле значення і надаватиме їх у подальшому через список вибору. Це дозволяє значно швидше заповнювати форми.

Тепер не в усіх випадках бажано таке поведінку. У таких випадках автозаповнення можна явно вимкнути. Для цього атрибуту autocomplete призначається значення off.

<input type="text" autocomplete="off" />



Також можна додати атрибут autocomplete елементу form. Залежно від того, чи використовується значення on чи off, може бути активована або вимкнена функція автозаповнення для всієї форми.

<form autocomplete="on">
..
</form>



У випадку протилежних вказівок всередині форми використовуватиметься це.

<form autocomplete="on">
   Ім'я: <input type="text" name="vname" autocomplete="off" /><br />
   Прізвище: <input type="text" name="nname" /><br />
   Поштовий індекс: <input type="text" name="plz" /><br />
   Місце: <input type="text" name="ort" />
</form>



У цьому прикладі автозаповнення застосуватиметься до всіх полів форми, оскільки значення атрибуту autocomplete в початковому елементі form встановлене на on. Виняток складає тільки поле vname, оскільки автозаповнення для цього поля було явно вимкнене.

Для того, щоб автозаповнення працювало, ця функція повинна підтримуватися відповідним браузером і не повинна бути вимкнена. Крім того, у списку варіантів будуть показані тільки ті значення, які вже були введені раніше.

Щоб мати змогу впливати на значення у списку варіантів, було введено HTML5 елемент datalist. Цей елемент не призводить до видимого виводу в браузері. За допомогою дочірніх елементів option можна визначити значення для списків варіантів. Наприклад:

<div>
Мова:
<br />
<input type="text" autocomplete="on" list="sprache" />
</div>
<datalist id="sprache">
   <option value="HTML5"></option>
   <option value="XHTML"></option>
   <option value="PHP"></option>
   <option value="JavaScript"></option>
</datalist>



Через атрибут list елементу input встановлюється логічне зв'язок між полем введення та елементом datalist. Для цього атрибута list та для атрибута id елемента datalist мають бути використані однакові значення.

Встановлення фокусу

Полю форми можна автоматично призначити фокус при завантаженні сторінки. Таку функцію ви могли бачити, наприклад, на головній сторінці Google. При її завантаженні ви можете одразу ввести пошуковий запит, не маючи потребу вручну встановлювати курсор у поле пошуку/введення.

HTML та CSS для початківців (частина 17): Форми (5)

У HTML5 для цих випадків існує атрибут autofocus. Цей атрибут призводить до того, що поле форми, обладнане ним, отримує фокус автоматично при завантаженні сторінки.

Приклад:

<form>
  <input name="suchfeld" autofocus="autofocus" />
  <input type="submit" value="Suche" />
</form>



Браузери, які не розпізнають атрибут autofocus, просто його ігнорують. Це не має негативних наслідків. (Втім, в такому випадку поле не буде сфокусовано).

Перевірка введення

Дотепер не можна було перевірити введення форми лише завдяки HTML-засобам. Тому, якщо вам, наприклад, потрібно перевірити, чи користувач дійсно ввів електронну адресу у поле форми, ви зазвичай зверталися до JavaScript або PHP. У HTML5 такі "викиданки" не є потрібними. Оскільки тепер HTML має API валідації. І воно дійсно гідне уваги. За дуже маленькі зусилля відтепер можна перевіряти введення у форми.

У HTML5 є деякі правила, які визначають, як поля валідуються. Наприклад, в полі введення типу email перевіряється, чи було введено синтаксично коректну адресу електронної пошти.

url – Перевірка на URL

email – Перевірка на адресу електронної пошти

range – Перевірка на плаваюче число

number – Перевірка на плаваюче число

Щоб позначити поле як обов'язкове для заповнення, йому призначається атрибут required.

<input id="vname" name="vname" type="text" required="required" />



Поле, позначене таким чином, має бути заповненим, тобто не може бути пустим.

Але увага: для валідації полів мають бути виконані певні умови.

• Елементу має бути призначено атрибут name.

• Елемент повинен бути в середині елементу form, тобто знаходитися в HTML-формі. Альтернативою може бути також встановлення зв'язку з формою через атрибут form.

• Елемент не повинен мати атрибутів readonly або disabled.

Правильне застосування виглядає наступним чином:

<form action="form.php">
    <input id="vname" name="vname" type="text" required="required" />
    <input type="submit" />
 </form>



Тут браузер перевірить, чи поле було заповненим. Якщо поле порожнє і спробувати відправити форму, браузер повинен вивести повідомлення про помилку.

HTML та CSS для новачків (частина 17): Форми (5)

Протягом цього рядка вже було наголошено на полях форми email, range, number, tel та url. Ці поля перевіряються не лише на наявність значення, а й на правильність введеного значення.

<form action="form.php">
    <input id="email" name="email" type="email" />
    <input type="submit" />
 </form>



Наприклад, для полів типу email перевіряється, чи введене значення дійсно є синтаксично вірною електронною адресою. Якщо цього не відбувається, браузер видаст повідомлення про помилку.

HTML та CSS для початківців (частина 17): Форми (5)



Для відображення повідомлення про помилку відповідальні браузери.

Не дозволяти автоматичну перевірку полів

Не в усіх випадках автоматична перевірка введених даних є бажаною. Якщо потрібно заборонити перевірку всієї форми, то в атрибут novalidate додаткового елементу form.

<form action="form.php" novalidate>
    <input id="email" name="email" type="email" />
    <input type="submit" />
 </form>



Також атрибут formnovalidate можна додати до кнопки відправлення. Це корисно, наприклад, якщо одночасно з кнопкою відправки пропонується кнопка для збереження форми.

<form action="form.cgi" method="post">
    <input id="email" name="email" type="email" />
    <input type="submit" name="submit" value="Senden" />
    <input type="submit" 
    formnovalidate="formnovalidate"  value="Speichern" />
    <input type="submit" 
    formnovalidate="formnovalidate" value="Ausloggen" />
 </form>



У цьому випадку форма валідується лише за допомогою першої кнопки відправлення. Інші дві використовуються для завантаження та виходу. В цих випадках валідація не потрібна.