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. Тъй като за това поле автодовършаването е изрично деактивирано.

За да функционира автодовършаването, тази функция трябва да бъде поддържана от съответния браузър и не трябва да е деактивирана. Освен това в списъка с предложения се показват само стойности, които вече са били въведени предварително.

За да имате реален контрол върху стойностите в списъка с предложения, беше въведен елементът datalist с HTML5. Този елемент не води до визуално извеждане в браузъра. Чрез подчинените 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="searchField" autofocus="autofocus" />
  <input type="submit" value="Search" />
</form>



Браузърите, които не разпознават атрибута autofocus, го пренебрегват. Това игнориране няма негативни последици. (Имайки предвид, че тогава полето не се фокусира).

Проверка на въведеното

Досега с HTML средства формите не можеха да бъдат проверявани самостоятелно. Ако искахте да проверите например дали потребителят е въвел наистина имейл адрес в поле на формуляра, обикновено използвахте JavaScript или PHP. В HTML5 подобни "трюкове" вече не са необходими. Тъй като HTML вече разполага със система за валидация. И тя определено е мощна. С много малко усилия вече може да се проверяват въведените стойности във формулярите.

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="Изпрати" />
    <input type="submit" 
    formnovalidate="formnovalidate"  value="Запиши" />
    <input type="submit" 
    formnovalidate="formnovalidate" value="Изход" />
 </form>



В този случай формулярът ще се валидира само чрез първия бутон за изпращане. Другите два са за записване и излизане. В тези случаи валидация не е необходима.