Цель этой статьи — научиться выполнять проверку форм в JavaScript. В целях обучения я разработал форму веб-сайта для ведения учета сотрудников, используя HTML, CSS и JavaScript. Вся логика проверки формы разработана с использованием JavaScript.
Ниже приведена демонстрация проекта:
Разработка проекта разделена на три этапа:
- Написание HTML
- Добавление CSS
- Написание JavaScript
Напишите HTML для создания формы
<!--file name validations.html--> <html> <head> </head> <body> <br> <h2>Employee Record Keeping System</h2> <div class=”container”> <form id=”form” onsubmit=”validation()”> <div class=”title”><b>Please Enter Values</b></div> <! — First Name input → <div> <label for=”fname”>First Name</label> <input type=”text” name=”fname” id=”fname” placeholder=”Vivek”/> <p id=”err1"></p> </div> <! — Last Name input → <div> <label for=”lname”>Last Name</label> <input type=”text” name=”lname” id=”lname” placeholder=”Chaudhary”/> <p id=”err2"></p> </div> <! — EmployeeId input → <div> <label for=”eid”>EmployeeId</label> <input type=”text” name=”eid” id=”eid” placeholder=”1234"/> <p id=”err3"></p> </div> <! — Email input → <div> <label for=”email”>Email</label> <input type=”email” name=”email” id=”email” placeholder=”[email protected]”/> <p id=”err4"></p> </div> <! — Department input → <div> <label for=”did”>DeptNo</label> <input type=”text” name=”did” id=”did” placeholder=”10"/> <p id=”err5"></p> </div> <br><br> <button id=”btn” type=”submit”>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 (объектной модели данных) и изменять их. Я разбил 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 reGex for Name validation var rName = /^[A-Za-z]+$/; // Javascript reGex for EmpID validation. var rEmpID=/\d{4}$/; //Javascript reGex for Email Validation. var rEmail=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/g; //JS for deptno validation var rDeptno = /^\d{2}$/;
Определить функцию проверки
//file name is validation.js function validation() { //first name validation if (fname.value==”” || !fname.value.match(rName)){ err1.innerHTML=”*Firstname cannot be blank and should be characters”; fname.style.border = “2px solid red”; } else { err1.innerHTML=””; fname.style.border = “2px solid green”; } //last name validation if (lname.value==”” || !lname.value.match(rName)){ err2.innerHTML=”*Lastname cannot be blank and should be in characters”; lname.style.border = “2px solid red”; } else { err2.innerHTML=””; lname.style.border = “2px solid green”; } //email validation console.log(“email id is “,email.value) if (email.value==”” && !rEmail.test(email.value)){ console.log(“inside email if”) err4.innerHTML=”*EmailID should be non-empty and valid. Please follow rules”; email.style.border = “2px solid red”; } else { err4.innerHTML=””; email.style.border = “2px solid green”; } //employee ID validation if (eid.value==”” || !rEmpID.test(eid.value)){ err3.innerHTML=”*Please enter a valid Employee ID starting with 2 characters and 6 digits”; eid.style.border = “2px solid red”; } else { err3.innerHTML=””; eid.style.border = “2px solid green”; } //department no validation dept=Number(did.value) console.log(‘value of dept ‘,dept +” “+typeof(dept)) if (dept==”” || !rDeptno.test(dept)){ console.log(‘inside if’) err5.innerHTML=”*DeptNo cannot be Empty or non-numeric. Please check again”; did.style.border = “2px solid red”; } else if(!dept==”” && !deptno.includes(dept)) { console.log(“value of dept entered “, did.value + “ “+typeof(did.value)) err5.innerHTML=”*DeptNo should be from list of values[10,20,30,40]. Please check again”; did.style.border = “2px solid red”; } else if(!dept==”” && deptno.includes(dept)){ console.log(‘inside 2nd 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 reGex for Name validation var rName = /^[A-Za-z]+$/; //first name validation if (fname.value=="" || !fname.value.match(rName)){ err1.innerHTML="*Firstname cannot be blank and should be in characters"; fname.style.border = "2px solid red"; } else { err1.innerHTML=""; fname.style.border = "2px solid green"; }
- получить доступ к элементу ввода формы текстового типа для имени с помощью document.getElementById(“fname”) также получить доступ к тегу ошибки с помощью document.getElementById(“err1”)
- определите регулярное выражение для имя, используяrName = /^[A-Za-z]+$/
- Следующая часть — это блок if-else, в котором выполняется сравнение для выполнения действия над формой. Если имя, введенное пользователем, имеет значение NULL или не соответствует критериям регулярного выражения, текстовое поле будет отмечено красным с сообщением об ошибке.
- Если имя, введенное пользователем, соответствует политике, результат будет таким, как показано ниже, текстовое поле будет отмечено зеленым цветом.
Логика проверки LastName такая же, как и FirstName.
2. Электронная почта.
let email=document.getElementById(“email”); let err4=document.getElementById("err4"); //Javascript reGex for Email Validation. var rEmail=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/g; //email validation if (email.value=="" && !rEmail.test(email.value)){ err4.innerHTML="*EmailID should be non-empty and valid. Please follow rules"; email.style.border = "2px solid red"; } else { err4.innerHTML=""; email.style.border = "2px solid green"; }
- получить доступ к элементу ввода формы текстового типа для электронной почты, используя document.getElementById(“email”), а также получить доступ к тегу ошибки, используя document.getElementById(“err4”).
- Если идентификатор электронной почты, введенный пользователем, имеет значение NULL или не соответствует критериям регулярного выражения, текстовое поле будет отмечено красным с сообщением об ошибке.
- поскольку мы определили поле ввода текста как тип электронной почты, оно ожидает символ «@», иначе выдаст ошибку, как показано ниже:
- Когда адрес электронной почты, введенный пользователем, соответствует политике, результат будет таким, как показано ниже: текстовое поле помечается зеленым.
3. Номер отдела
let did=document.getElementById(“did”); let err5=document.getElementById("err5") //list of values for departments let deptno=[10,20,30,40,50] //department no validation dept=Number(did.value) if (dept=="" || !rDeptno.test(dept)){ console.log('inside if') err5.innerHTML="*DeptNo cannot be Empty or non-numeric. Please check again"; did.style.border = "2px solid red"; } else if(!dept=="" && !deptno.includes(dept)) { err5.innerHTML="*DeptNo should be from list of values[10,20,30,40]. Please check again"; did.style.border = "2px solid red"; } else if(!dept=="" && deptno.includes(dept)){ err5.innerHTML=""; did.style.border = "2px solid green"; } }
- получить доступ к элементу ввода формы текстового типа для электронной почты, используя document.getElementById(“did”). Также получить доступ к тегу ошибки, используя document.getElementById(“err5”) .
- если значения, введенные пользователем, не удовлетворяют условию if, выдается ошибка, и текстовое поле помечается красным.
- если значения, введенные пользователем, не удовлетворяют условию else if , выдается ошибка, и текстовое поле помечается красным.
- если значения, введенные пользователем, удовлетворяют условию else if , то текстовое поле помечается зеленым.
Вот и все, что связано с логикой проверки формы, написанной на JavaScript.
Результаты Если все введенные пользователем данные неверны:
Результаты Если все введенные пользователем данные верны:
Объем этой статьи относится только к проверкам на стороне клиента.
Краткое содержание:
- напишите HTML, чтобы определить форму проекта.
- добавьте CSS, чтобы стилизовать элементы HTML-формы.
- JavaScript для проверки формы на стороне клиента.