Html5, валідація форм

Поля в формі призначені для збору інформації від відвідувачів сторінки. Але незважаючи на всі зусилля і пояснення, отримання правильної інформації може виявитися важкою справою. Нетерплячі або неуважні відвідувачі можуть пропускати важливі поля, заповнювати поле або кілька полів в повному обсязі, та й просто натискати неправильні клавіші. Заповнивши таким чином форму, вони натискають кнопку "Відправити", і серверна програма отримує набір даних, з якими вона не знає що робити (якщо не реалізована валідація даних на серверній стороні).

Творці HTML5 змогли побачити цю потребу і винайшли спосіб привернути браузери на допомогу, переклавши завдання перевірки з плечей веб-розробників на веб-оглядачі. Творці HTML5 розробили систему перевірки на стороні клієнта, яка дозволяє вставляти основні правила валідації в будь-яке поле . Найкраще в цій системі - це її простота і легкість: все, що потрібно зробити - так це вставити правильний атрибут.

Як працює перевірка HTML5?

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

Наприклад, припустимо, що певне поле не можна залишати порожнім, і відвідувач повинен ввести в нього хоч щось. У HTML5 це здійснюється за допомогою атрибута required у відповідному полі (далі допрацьовуємо приклад з попередньої статті):

Навіть із застосуванням для поля атрибута required на цю вимогу немає ніяких візуальних покажчиків за замовчуванням. Тому слід звернути увагу користувача на цю вимогу за допомогою будь-яких своїх візуальних ознак, наприклад, виділивши рамку поля кольором і поставивши біля нього зірочку.

Перевірка виконується, коли користувач натисне кнопку для відправки форми. Якщо браузер підтримує форми HTML5, він помітить пусте обов'язкове для заповнення поле, перехопить виклик відправки форми і відобразить спливаюче повідомлення про помилку:

Html5, валідація форм

Виникає ще одне питання: що буде, якщо порушено кілька правил перевірки, наприклад, не заповнено кілька обов'язкових полів?

Знову ж таки, нічого не буде, поки користувач не натисне кнопку для відправки форми. Тільки після цього браузер почне перевіряти поля зверху вниз. Зустрів першого некоректне значення, він припиняє подальшу перевірку, скасовує надсилання форми і виводить повідомлення про помилку поруч з полем, що викликав цю помилку. (Крім цього, якщо при заповненні форми область з полем помилки вийшла за межі екрану, браузер прокручує екран, щоб це поле перебувало у верхній частині сторінки.) Після того як користувач виправить цю помилку і знову натисне кнопку для відправки форми, браузер зупиниться на наступній помилку введення і процес повториться.

відключення перевірки

У деяких випадках може знадобитися відключити перевірку. Наприклад, ви хочете протестувати свій серверний код на правильність обробки надійшли некоректних даних. Щоб відключити перевірку для всієї форми, в елемент

додається атрибут novalidate.

Інший підхід - це відключити перевірку в кнопці для відправки форми. Такий спосіб іноді корисний у цій веб-сторінці. Наприклад, замість відправки, може бути, потрібно зберегти наполовину заповнену форму для подальшого використання. Щоб отримати таку можливість, в елемент відповідної кнопки вставляється атрибут formnovalidate.

Виявлення незаповнених полів - це лише один з кількох типів перевірки. Пізніше ми розглянемо виявлення помилок в даних різних типів.

Оформлення результатів перевірки

Хоча веб-розробники не можуть оформляти повідомлення про помилки перевірки, вони можуть змінювати зовнішній вигляд полів в залежності від результатів їх валідації. Наприклад, можна виділити поле з неправильним значенням кольоровим фоном відразу ж, коли браузер виявить неправильні дані.

Все, що для цього потрібно - це додати кілька простих CSS3-псевдокласів. Доступні такі опції:

required і optional

Застосовують форматування до полю в залежності від того, чи використовує це поле атрибут required чи ні;

Застосовують форматування до полю в залежності від правильності введеного в нього значення. Але не забувайте, що більшість браузерів не перевіряє дані, поки користувач не спробує відправити форму, тому форматування полів з некоректними значеннями не виконується відразу ж при введенні такого значення;

Форматування до полів, для яких використовується атрибут min або max, щоб обмежити їх значення певним діапазоном значень.

Html5, валідація форм

Перевірка за допомогою регулярних виразів

Квадратні дужки на початку рядка визначають діапазон допустимих символів. Іншими словами, група [A-Z] дозволяє будь-які великі літери від А до Z. Наступна за нею частину в фігурних дужках вказує множник, тобто означає, що потрібні три великі літери. Наступне тире не має ніякого спеціального значення і означає саме себе, тобто вказує, що після трьох великих літер має бути тире. Нарешті, [0-9] позначає цифри в діапазоні від 0 до 9, а вимагає три таких цифри.

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

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

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

Але регулярні вирази дуже швидко стають більш складними, ніж розглянутий нами приклад. Тому створення правильного регулярного виразу може бути досить трудомістким завданням, що пояснює, чому більшість розробників вважає за краще використовувати для перевірки даних на своїх сторінках готові регулярні вирази.

Щоб застосувати отримане тим чи іншим шляхом регулярний вираз для перевірки значення поля або