Валидация формы обратной связи с помощью Javascript
В одной из статей я приводил пример, валидации формы с помощью CSS, но с ограниченными возможностями. Рассмотрим валидацию с более широким функционалом и выводом различных сообщений об ошибке.
Подключаем 3 библиотеки:
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js
https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js
https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js
HTML
<form class="form" id="main_form" action="javascript:void(0);" autocomplete="off"> <div class="form-row input-field"> <input id="first_name" type="text" class="input" name="FirstName"> <label for="first_name">Имя</label> </div> <div class="form-row input-field"> <input id="last_name" type="text" class="input" name="LastName"> <label for="last_name">Фамилия</label> </div> <div class="form-row input-field"> <input id="your_email" type="email" class="input" name="email"> <label for="your_email">Email</label> </div> <div class="form-row input-field"> <input id="your_phone" type="tel" class="input" name="Phone"> <label for="your_phone">Телефон</label> </div> <div class="form-row input-field"> <input id="your_password" type="password" class="input password" name="password" autocomplete="new-password"> <label for="your_password">Пароль</label> </div> <div class="form-row form-row-btn"> <button class="submit" id="submit" type="submit" name="submit">Отправить</button> </div> </form>
CSS
* { box-sizing: border-box; } html { font-size: 16px; } .form { width: 480px; max-width: 100%; margin: 20px auto; padding: 40px; border-radius: 10px; background-color: #dee8f7; } .input-field { position: relative; margin-bottom: 30px; } .input { font-family: Arial, sans-serif; font-size: 1.125rem; color: #000; width: 100%; height: 50px; line-height: 50px; padding: 0 15px; border: 1px solid #fff; border-radius: 4px; background-color: #fff; box-shadow: none; outline: none; transition: 0.4s; } .input.error { border-color: #ee294e; background-color: #fde9ed; } .submit { font-family: "Noto Sans", sans-serif; font-size: 1.125rem; width: 100%; height: 75px; background-color: #00e676; color: #000; text-align: center; cursor: pointer; border: none; border-radius: 4px; outline: none; transition: 0.4s; } .submit:hover { background-color: #00a454; color: #fff; } .input-field > label { font-family: Arial, sans-serif; color: #000000; position: absolute; top: 0; left: 14px; font-size: 1.125rem; cursor: text; text-align: initial; transition: transform 0.2s ease-out, color 0.2s ease-out, -webkit-transform 0.2s ease-out; transform-origin: 0% 100%; transform: translateY(16px); } .input-field > label.active { transform: translateY(-22px) scale(0.8); transform-origin: 0 0; color: #9e9e9e; } .form label.error { color: #ee294e !important; transform: none !important; font-size: 13px; line-height: 1.1; margin-top: 4px; display: inline-block; position: absolute; left: auto; right: 0; top: 100%; }
JS
$(function() { /* validate form */ $("form").each(function() { $(this).validate({ rules: { FirstName: { required: true, minlength: 3 }, LastName: { required: true, minlength: 3 }, email: { required: true, email: true }, Phone: { required: true }, password: { required: true, minlength: 5 } }, messages: { FirstName: { required: "Имя не может быть пустым", minlength: jQuery.validator.format("Введите не менее {0} символов.") }, LastName: { required: "Фамилия не может быть пустым", minlength: jQuery.validator.format("Введите не менее {0} символов.") }, email: { required: "Email не может быть пустым", email: "Неверный формат Email" }, Phone: { required: "Телефон не может быть пустым" }, password: { required: "Пароль не может быть пустым", minlength: jQuery.validator.format("Введите не менее {0} символов") } } }); }); /* validate form */ });
Рабочий пример:
See the Pen Validate form by JS by Denis (@deniscreative) on CodePen.0
Недавно применял на сайте интересную анимацию, выглядит она как гифка, но по факту это одна…
Столкнулся с проблемой редиректа в ModX. Стандартные варианты редиректа не работают. Нашел такое решение: Если…
Анимируем элементы на странице при прокрутке. В данном примере рассмотрим плавное появление элементов при скроле…
CSS правило @keyframes Создание CSS анимации начинается с объявления имени анимации в блоке @keyframes и…
3 комментария
Ответить
Подскажите, как настроить эту форму, чтобы отправляла информацию на email
Для простых сайтов на HTML я использую такую форму Уникальная форма обратной связи с ajax на php
Спасибо большое!