HTML & CSS для начинающих

HTML и CSS для начинающих (Часть 17): Формы (5)

Все видео урока

Функция автозаполнения вызывает радость и восторг в Интернете. Если в поле формы что-то вводится, браузер предлагает список слов, если данная функция активирована и поддерживается браузером.

HTML и CSS для начинающих (часть 17): Формы (5)

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

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



Значением on активируется автозаполнение для поля. Теперь браузер запоминает значения, введенные в поле, и позже предлагает их через выпадающий список. Таким образом, формы можно заполнять значительно быстрее.

Однако такое поведение не требуется для каждого поля. В таких случаях автозаполнение можно явно деактивировать. Для этого присваивается атрибуту autocomplete значение off.

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



Также можно добавить атрибут autocomplete к элементу form. В зависимости от того, используется ли значение on или off, будет активирована или деактивирована функция автозаполнения для всей формы.

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



Однако в случае противоречивых указаний в пределах формы применяются последние указания.

<form autocomplete="on">
   Name: <input type="text" name="vname" autocomplete="off" /><br />
   Vorname: <input type="text" name="nname" /><br />
   Postleitzahl: <input type="text" name="plz" /><br />
   Ort: <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 должны совпадать.

HTML & CSS для начинающих (часть 17): Формы (5)

Установление фокуса

Фокус автоматически может быть установлен на поле формы при загрузке страницы. Такая функция известна, например, с главной страницы 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)



На вывод сообщения об ошибке отвечают браузеры.

Не автоматизировать проверку полей

Не во всех случаях желательно проводить автоматическую проверку ввода данных. Если необходимо отключить проверку всей формы, в начальном элементе form присваивается атрибут novalidate.

<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>



В этом случае форма будет проверяться только после нажатия первой кнопки отправки. Другие две кнопки служат для сохранения и выхода из учетной записи. При этом проверка в этих случаях не требуется.