Валидация формы на JS и HTML 5 с выводом ошибок перед отправкой на сервер.
Автор: © web-rubik
2201 Просмотры
5 Понравилось
Простейшая валидация формы на JS, PHP 7 и HTML 5.
Довольно часто на различных сайтах можно встретить проверку введённых данных в форму с выводом ошибок. Методов валидации формы существует довольно много и все они, так или иначе - работают! В этой статье я приведу пример, как осуществить валидацию формы на JS и HTML 5 перед отправкой на сервер. Ну и для полной картины осуществим валидацию формы на сервере посредствам PHP в случаи отключенного JS на стороне клиента.
К примеру, имеется форма обратной связи и нам необходимо сделать проверку введённых данных.
Вот сам HTML 5 код формы:
<?php session_start(); ?> <!DOCTYPE html> <html> <head> <title>Простейшая валидация формы на JS, PHP 7 и HTML 5</title> <meta charset="UTF-8"> <style> #msg, #error { color:#F00; } </style> <script src="js/jquery.min.js"></script> </head> <body> <?php if (isset($_SESSION['msg'])) { // Технические сообщения ?> <div id="msg"><?=$_SESSION['msg']?></div> <?php unset($_SESSION['msg']); } ?> <script> $(function hideDiv(){ $('#msg').delay(5000).fadeOut(); }) </script> <form method="post" action="handler/scriptHandler.php" onSubmit="return validateFeedbackForm();"> <input id="name" name="name" type="text" placeholder="Имя *" aria-required="true"><br> <input id="email" name="email" type="text" placeholder="Email *" aria-required="true"><br> <textarea id="text" name="text" placeholder="Текст *" aria-required="true"></textarea><br> <input id="submit" name="submit" type="submit" value="Отправить"> </form> <br> <div id="error" style="display:none;"></div> <script src="js/validate.js"></script> </body> </html>
В данной форме мы указали путь к PHP файлу обработчику. Установили событие onSubmit и указали название функции "return validateFeedbackForm ();", которая будет осуществлять JS проверку. Так же мы дали каждому полю и кнопке идентификатор. Вне формы будут сообщения об ошибках, которые по умолчанию отключены. JS код будет в отдельном файле, по этому пропишем к нему путь src="js/validate.js".
Вот сам JS код проверки:
function validateFeedbackForm() { var name = document.getElementById("name"); var name2 = name.value; var email = document.getElementById("email"); var email2 = email.value; var text = document.getElementById("text"); var checkName = /^[а-яёa-z]{3,25}$/i; var checkEmail = /^[.a-z0-9_-]{3,20}@[.a-z0-9_-]{1,20}.[a-z]{2,4}$/i; if (!name.value && checkName.test(name2) == false) { name.style.border = "1px solid #E57057"; $("#error").fadeIn(2000).text("Ошибка! Не корректно введено Имя.."); return false; } else { name.style.border = "1px solid #00BFF0"; $("#error").fadeOut(200); } if (!email.value && checkEmail.test(email2) == false) { email.style.border = "1px solid #E57057"; $("#error").fadeIn(2000).text("Ошибка! Не корректно введен Email.."); return false; } else { email.style.border = "1px solid #00BFF0"; $("#error").fadeOut(200); } if (!text.value) { text.style.border = "1px solid #E57057"; $("#error").fadeIn(2000).text("Ошибка! Поле текст не должно быть пустое.."); return false; } else { text.style.border = "1px solid #00BFF0"; $("#error").fadeOut(200); } }
Здесь мы запускаем функцию validateFeedbackForm (). Создаём переменные к каждому элементу формы и обращаемся к методу document.getElementById получая все его атрибуты по id. И создадим ещё две переменные с регулярными выражениями для проверки введённых данных
var checkName = /^[а-яёa-z]{3,25}$/i;
var checkEmail = /^[.a-z0-9_-]{3,20}@[.a-z0-9_-]{1,20}.[a-z]{2,4}$/i;
Далее мы запускаем проверку if else, где, если введённые данные не верны, мы обращаемся к атрибуту style и меняем цвет окантовки вводимого поля формы. Отменяем display:none; у div с ошибкой fadeIn(2000); и отключаем возможность перехода у кнопки return false;.
Если всё верно, меняем цвет окантовки вводимого поля и прячем ошибку fadeOut(200);.
После того как все поля проверены, элементы формы отправляются в PHP файл обработчик
action="handler/scriptHandler.php".
Далее нам необходимо сделать такую же проверку в scriptHandler.php, на случай если пользователь отключил JS в браузере.
Сам файл обработчик scriptHandler.php:
<?php // СКРИПТ ОБРАБОТЧИК session_start(); if (isset($_POST['submit'])) { $name = trim(strip_tags($_POST['name'])); $email = trim(strip_tags($_POST['email'])); $text = trim(strip_tags($_POST['text'])); $checkName = "/^[йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮa-zA-Z]{3,25}$/"; $checkEmail = "/^[.a-z0-9_-]{3,20}@[.a-z0-9_-]{1,20}.[a-z]{2,4}$/i"; if (!preg_match($checkName, $name) && !preg_match($checkEmail, $email)) { $_SESSION['msg'] = "<div><strong>Ошибка!</strong>Не корректно заполнены данные..</div><br>"; header("location: ../index.php"); exit; } else if ($text == '') { $_SESSION['msg'] = "<div><strong>Ошибка!</strong> Все поля обязательны для заполнения. Будьте внимательны и указывайте только достоверные данные.</div><br>"; header("location: ../index.php"); exit; } else { $_SESSION['msg'] = "<div><strong>Поздравляем!</strong> Текст можно отправлять на модерацию.</div><br>"; header("location: ../index.php"); exit; }} header("location: ../index.php"); exit; mysqli_close($connect); ?>
На этом у меня всё! В исходниках я положил все необходимые файлы, и если будет чего не понятно, пишите в комментариях.
Комментариев нет или
Оставить комментарий
Оставленные комментарии проверяются технической частью интернет портала Web-rubik.ru