Проверка формы на клиентской стороне с использованием JavaScript
Проверка формы с JavaScript на клиентской стороне.
Целью данной статьи является изучение того, как выполнять проверку формы с помощью JavaScript. В учебных целях я разработал форму для веб-сайта по учету сотрудников с использованием HTML, CSS и JavaScript. Логика проверки формы разработана с использованием JavaScript.
Ниже приведена демонстрация проекта:
- 10 лучших генераторов AI-аватаров в 2023 году
- Наискорейший спуск и метод Ньютона на языке Python, с нуля Сравнение
- Узнайте, как обучать модели обнаружения объектов с помощью MMDetection
Разработка проекта разделена на три этапа:
- Написание HTML
- Добавление CSS
- Написание JavaScript
Написание HTML для создания формы
<!--file name validations.html--><html> <head> </head><body> <br> <h2>Система учета сотрудников</h2> <div class=”container”> <form id=”form” onsubmit=”validation()”> <div class=”title”><b>Пожалуйста, введите значения</b></div> <! — Ввод имени → <div> <label for=”fname”>Имя</label> <input type=”text” name=”fname” id=”fname” placeholder=”Вивек”/> <p id=”err1"></p> </div> <! — Ввод фамилии → <div> <label for=”lname”>Фамилия</label> <input type=”text” name=”lname” id=”lname” placeholder=”Чаудхари”/><p id=”err2"></p> </div> <! — Ввод идентификатора сотрудника → <div> <label for=”eid”>Идентификатор сотрудника</label> <input type=”text” name=”eid” id=”eid” placeholder=”1234"/> <p id=”err3"></p> </div> <! — Ввод электронной почты → <div> <label for=”email”>Электронная почта</label> <input type=”email” name=”email” id=”email” placeholder=”vivch@gmail.com”/> <p id=”err4"></p> </div> <! — Ввод отдела → <div> <label for=”did”>Номер отдела</label> <input type=”text” name=”did” id=”did” placeholder=”10"/> <p id=”err5"></p> </div> <br><br> <button id=”btn” type=”submit”>Отправить</button> </form> </div></body></html>
На данный момент форма выглядит следующим образом:
Закончили с HTML.
Добавление CSS для стилизации формы
CSS помогает добавить стилизацию и эффекты к нашей форме, чтобы она выглядела более привлекательно.
<style> * { margin: .5; padding: .5; box-sizing: border-box;}body { font-family: sans-serif;}form { display: flex; flex-direction: column; justify-content: center; max-width: 400px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); padding: 50px;}input[type=”text”],input[type=”email”]{ width: 100%; border: 1px solid #333; box-sizing: border-box}label { display: block; margin-bottom: 5px;}input:invalid{ box-shadow:0 0 5px 1px red;}input:focus { border: 2px solid #f2796e;}form div input { width: 100%; height: 40px; border-radius: 8px; outline: none; border: 2px solid #c4c4c4; padding: 0 30px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);}form div { position: relative; margin-bottom: 15px;}input:focus { border: 2px solid #f2796e;}button { margin-top: 15px; width: 100%; height: 45px; background-color: #6e98f2; border: 2px solid #6e98f2; border-radius: 8px; color: #fff; font-size: 20px; cursor: pointer; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); transition: all 0.1s ease;}.success-icon,.failure-icon { right: 0.5; opacity: 0.5;}button:hover { opacity: 0.7;}</style>
После добавления компонентов CSS к нашим объектам HTML, вот так выглядит наша форма.
Закончили со стилизацией.
Добавление JavaScript для валидации.
JavaScript помогает нам получать доступ и изменять элементы DOM (Data Object Model). Я разбил JavaScript на несколько частей для лучшего понимания.
Получение доступа к элементам HTML DOM по их идентификаторам:
let fname=document.getElementById(“fname”);let lname=document.getElementById(“lname”);let eid=document.getElementById(“eid”);let email=document.getElementById(“email”);let did=document.getElementById(“did”);let form=document.getElementById(“form”)let err1=document.getElementById(“err1”)let err2=document.getElementById(“err2”)let err3=document.getElementById(“err3”)let err4=document.getElementById(“err4”)let err5=document.getElementById(“err5”)let successIcon = document.getElementsByClassName(“success-icon”)let failureIcon = document.getElementsByClassName(“failure-icon”)let deptno=[10,20,30,40,50]let btn=document.getElementById("btn").type
Метод getElementById() является одним из наиболее распространенных методов в HTML DOM. Он используется для доступа или изменения элемента HTML.
Метод getElementByClassName() возвращает коллекцию элементов с указанными именами классов.
Мы используем оба метода для доступа к компонентам формы и изменения их поведения.
Определение регулярных выражений для валидации компонентов формы
// Регулярное выражение JavaScript для валидации имениvar rName = /^[A-Za-z]+$/;// Регулярное выражение JavaScript для валидации EmpID.var rEmpID=/\d{4}$/; //Регулярное выражение JavaScript для валидации Email.var rEmail=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/g; //JS для валидации deptnovar rDeptno = /^\d{2}$/;
Определение функции для валидации
// имя файла - validation.jsfunction validation() { // валидация имени if (fname.value==”” || !fname.value.match(rName)){ err1.innerHTML=”*Имя не может быть пустым и должно состоять только из букв”; fname.style.border = “2px solid red”; } else { err1.innerHTML=””; fname.style.border = “2px solid green”; } // валидация фамилии if (lname.value==”” || !lname.value.match(rName)){ err2.innerHTML=”*Фамилия не может быть пустой и должна состоять только из букв”; lname.style.border = “2px solid red”; } else { err2.innerHTML=””; lname.style.border = “2px solid green”; } // валидация электронной почты console.log(“идентификатор электронной почты - “,email.value) if (email.value==”” && !rEmail.test(email.value)){ console.log(“внутри email if”) err4.innerHTML=”*Электронная почта должна быть заполнена и быть действительной. Пожалуйста, следуйте правилам”; email.style.border = “2px solid red”; } else { err4.innerHTML=””; email.style.border = “2px solid green”; } // валидация идентификатора сотрудника if (eid.value==”” || !rEmpID.test(eid.value)){ err3.innerHTML=”*Введите действительный идентификатор сотрудника, начинающийся с 2 символов и состоящий из 6 цифр”; eid.style.border = “2px solid red”; } else { err3.innerHTML=””; eid.style.border = “2px solid green”; } // валидация номера отдела dept=Number(did.value) console.log(‘значение номера отдела ‘,dept +” “+typeof(dept)) if (dept==”” || !rDeptno.test(dept)){ console.log(‘внутри if’) err5.innerHTML=”*Номер отдела не может быть пустым или не являться числом. Пожалуйста, проверьте еще раз”; did.style.border = “2px solid red”; } else if(!dept==”” && !deptno.includes(dept)) { console.log(“введенное значение номера отдела “, did.value + “ “+typeof(did.value)) err5.innerHTML=”*Номер отдела должен быть из списка значений [10,20,30,40]. Пожалуйста, проверьте еще раз”; did.style.border = “2px solid red”; } else if(!dept==”” && deptno.includes(dept)){ console.log(‘внутри 2-го elif’) err5.innerHTML=””; did.style.border = “2px solid green”; }}form.addEventListener(btn,(event)=>{ event.preventDefault()});
Проверки
- Имя
let fname=document.getElementById(“fname”);let err1=document.getElementById("err1");// Регулярное выражение на JavaScript для проверки имениvar rName = /^[A-Za-z]+$/;// Проверка имени if (fname.value=="" || !fname.value.match(rName)){ err1.innerHTML="*Имя не может быть пустым и должно состоять из букв"; fname.style.border = "2px solid red"; } else { err1.innerHTML=""; fname.style.border = "2px solid green"; }
- получить доступ к элементу формы с типом “text” для имени с помощью document.getElementById(“fname”), также получить доступ к тегу ошибки с помощью document.getElementById(“err1”)
- определить регулярное выражение для имени с помощью rName = /^[A-Za-z]+$/
- следующая часть – блок if-else, в котором производится сравнение для выполнения действий над формой. Если имя, введенное пользователем, является пустым или не соответствует критериям регулярного выражения, текстовое поле будет помечено красным цветом с сообщением об ошибке.
- когда имя, введенное пользователем, соответствует политике, результат будет следующим: текстовое поле помечено зеленым цветом.
Логика проверки фамилии такая же, как и для имени.
2. Email
let email=document.getElementById(“email”);let err4=document.getElementById("err4");// Регулярное выражение на JavaScript для проверки emailvar rEmail=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/g;// Проверка email if (email.value=="" && !rEmail.test(email.value)){ err4.innerHTML="*Email должен быть непустым и действительным. Пожалуйста, следуйте правилам"; email.style.border = "2px solid red"; } else { err4.innerHTML=""; email.style.border = "2px solid green"; }
- получить доступ к элементу формы с типом “text” для email с помощью document.getElementById(“email”), также получить доступ к тегу ошибки с помощью document.getElementById(“err4”)
- если введенный пользователем email является пустым или не соответствует критериям регулярного выражения, текстовое поле будет помечено красным цветом с сообщением об ошибке.
- поскольку мы определили текстовое поле как тип email, оно ожидает символ “@” или в противном случае выдаст ошибку, как показано ниже:
- когда email, введенный пользователем, соответствует политике, результат будет следующим: текстовое поле помечено зеленым цветом.
3. DeptNo
let did=document.getElementById(“did”);let err5=document.getElementById("err5")//список значений для отделовlet deptno=[10,20,30,40,50]//проверка номера отдела dept=Number(did.value) if (dept=="" || !rDeptno.test(dept)){ console.log('inside if') err5.innerHTML="*DeptNo не может быть пустым или не являться числом. Пожалуйста, проверьте снова"; did.style.border = "2px solid red"; } else if(!dept=="" && !deptno.includes(dept)) { err5.innerHTML="*DeptNo должен быть из списка значений [10,20,30,40]. Пожалуйста, проверьте снова"; did.style.border = "2px solid red"; } else if(!dept=="" && deptno.includes(dept)){ err5.innerHTML=""; did.style.border = "2px solid green"; }
- Доступ к элементу формы типа текст для email с использованием document.getElementById(“did”). Также доступ к тегу ошибки с помощью document.getElementById(“err5”).
- Если значения, введенные пользователем, не удовлетворяют условию if, то возникает ошибка, и текстовое поле помечается красным.
- Если значения, введенные пользователем, не удовлетворяют условию else if, то возникает ошибка, и текстовое поле помечается красным.
- Если значения, введенные пользователем, удовлетворяют условию else if, то текстовое поле помечается зеленым.
Вот и все, что касается логики проверки формы, написанной на JavaScript.
Результаты, если все введенные пользователем значения неверны:
Результаты, если все введенные пользователем значения верны:
Областью этой статьи являются только клиентские проверки.
Резюме:
- написать HTML для определения формы проекта.
- добавить CSS для стилизации элементов HTML формы.
- JavaScript для обработки проверки формы на клиентской стороне.