فرمها یکی از مهمترین بخشهای تعاملات کاربر با صفحات وب هستند. با استفاده از جاوااسکریپت، میتوانید تعاملات فرمها را کنترل کرده و از اعتبارسنجی (Validation) فرمها برای اطمینان از ورود دادههای صحیح استفاده کنید. در این مقاله، به بررسی نحوه مدیریت رویدادهای فرم و انجام اعتبارسنجی با استفاده از جاوااسکریپت میپردازیم و نکات بهینهسازی بر اساس استانداردهای گوگل را مرور میکنیم.
معرفی رویدادهای فرم مانند submit و input
انجام اعتبارسنجی فرم به صورت دستی
نمایش پیامهای خطا به کاربر
بهینهسازی برای بهبود تجربه کاربری و سئو
ابتدا یک فرم ساده HTML ایجاد میکنیم که شامل ورودیهای مختلفی مانند نام، ایمیل و رمز عبور باشد. همچنین از دکمه ارسال برای ارسال فرم استفاده میکنیم.
< ! DOCTYPE html >
< html lang="fa" >
< head >
< meta charset="UTF-8" >
< meta name="viewport" content="width=device-width, initial-scale=1.0" >
< title > فرم ثبت نام < / title >
< style >
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 20px;
}
form {
background-color: white;
padding: 20px;
border-radius: 5px;
max-width: 400px;
margin: auto;
}
input {
display: block;
width: 100%;
margin: 10px 0;
padding: 10px;
font-size: 16px;
border: 1px solid #ddd;
border-radius: 5px;
}
button {
background-color: #28a745;
color: white;
padding: 10px 20px;
border: none;
cursor: pointer;
}
button:hover {
background-color: #218838;
}
.error {
color: red;
font-size: 14px;
}
< / style >
< / head >
< body >
< form id="signup-form" >
< h1 > فرم ثبت نام < / h1 >
< label for="name" > نام: < / label >
< input type="text" id="name" name="name" required >
< div class="error" id="name-error" > < / div >
< label for="email" > ایمیل: < / label >
< input type="email" id="email" name="email" required >
< div class="error" id="email-error" > < / div >
< label for="password" > رمز عبور: < / label >
< input type="password" id="password" name="password" required minlength="6" >
< div class="error" id="password-error" > < / div >
< button type="submit" > ثبت نام < / button >
< / form >
< script src="app.js" > < / script >
< / body >
< / html >
توضیحات HTML:
یک فرم ثبتنام ساده شامل سه فیلد (نام، ایمیل، و رمز عبور) ایجاد کردهایم.
هر فیلد دارای یک عنصر خطا (div.error) برای نمایش پیامهای خطا به کاربر است.
ویژگیهای HTML مانند required و minlength برای انجام اعتبارسنجی اولیه استفاده شدهاند.
در این مرحله، میخواهیم رویداد submit فرم را مدیریت کنیم تا قبل از ارسال فرم به سرور، دادهها اعتبارسنجی شوند.
در فایل app.js، کد زیر را اضافه کنید:
// دسترسی به عناصر فرم
const form = document.getElementById('signup-form');
const nameInput = document.getElementById('name');
const emailInput = document.getElementById('email');
const passwordInput = document.getElementById('password');
// دسترسی به پیامهای خطا
const nameError = document.getElementById('name-error');
const emailError = document.getElementById('email-error');
const passwordError = document.getElementById('password-error');
// اعتبارسنجی فرم هنگام ارسال
form.addEventListener('submit', function(event) {
let isValid = true;
// پاک کردن پیامهای خطا
nameError.textContent = '';
emailError.textContent = '';
passwordError.textContent = '';
// اعتبارسنجی نام
if (nameInput.value.trim() === '') {
nameError.textContent = 'نام نمیتواند خالی باشد';
isValid = false;
}
// اعتبارسنجی ایمیل
if (!validateEmail(emailInput.value)) {
emailError.textContent = 'لطفاً یک ایمیل معتبر وارد کنید';
isValid = false;
}
// اعتبارسنجی رمز عبور
if (passwordInput.value.length < 6) {
passwordError.textContent = 'رمز عبور باید حداقل ۶ کاراکتر باشد';
isValid = false;
}
// جلوگیری از ارسال فرم در صورت وجود خطا
if (!isValid) {
event.preventDefault();
}
});
// تابع اعتبارسنجی ایمیل
function validateEmail(email) {
const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return re.test(email);
}
توضیحات کد:
ابتدا به عناصر فرم و پیامهای خطا دسترسی پیدا میکنیم.
با استفاده از رویداد submit، هنگامی که فرم ارسال میشود، اعتبارسنجی را انجام میدهیم.
در صورت خالی بودن فیلد نام، وارد کردن ایمیل نامعتبر یا کوتاه بودن رمز عبور، پیامهای خطا نمایش داده میشوند و از ارسال فرم جلوگیری میشود.
برای اعتبارسنجی ایمیل از یک الگوی Regular Expression استفاده شده است.
برای بهبود تجربه کاربری، میتوانیم اعتبارسنجی فیلدها را همزمان با تایپ کردن کاربر انجام دهیم. این کار باعث میشود کاربر سریعتر از خطاها آگاه شود.
// اعتبارسنجی همزمان فیلد نام
nameInput.addEventListener('input', function() {
if (nameInput.value.trim() === '') {
nameError.textContent = 'نام نمیتواند خالی باشد';
} else {
nameError.textContent = '';
}
});
// اعتبارسنجی همزمان فیلد ایمیل
emailInput.addEventListener('input', function() {
if (!validateEmail(emailInput.value)) {
emailError.textContent = 'لطفاً یک ایمیل معتبر وارد کنید';
} else {
emailError.textContent = '';
}
});
// اعتبارسنجی همزمان فیلد رمز عبور
passwordInput.addEventListener('input', function() {
if (passwordInput.value.length < 6) {
passwordError.textContent = 'رمز عبور باید حداقل ۶ کاراکتر باشد';
} else {
passwordError.textContent = '';
}
});
استفاده از HTML5 Validation: از اعتبارسنجیهای HTML5 مانند required و minlength برای جلوگیری از ارسال دادههای نامعتبر استفاده کنید. این کار باعث بهبود تجربه کاربری و کاهش بار روی سرور میشود.
کاهش بار روی سرور: با انجام اعتبارسنجی در سمت کاربر با استفاده از جاوااسکریپت، میتوانید از ارسال درخواستهای نامعتبر به سرور جلوگیری کرده و عملکرد سایت را بهبود بخشید.
تجربه کاربری بهتر: نمایش پیامهای خطا همزمان با تایپ کردن کاربر به بهبود تجربه کاربری کمک میکند. کاربر سریعاً از اشتباهات خود مطلع میشود و نیازی به ارسال دوباره فرم نخواهد داشت.
استفاده از Accessibility: پیامهای خطا باید به صورت واضح و قابل دسترس برای همه کاربران از جمله کاربران با نیازهای ویژه نمایش داده شوند. استفاده از تگهای HTML مناسب مانند
بهینهسازی برای سئو: فرمهایی که سریع بارگذاری میشوند و تجربه کاربری بهتری ارائه میدهند، در رتبهبندی گوگل تاثیر مثبتی دارند. بنابراین، اعتبارسنجی سمت کاربر و استفاده بهینه از منابع میتواند به بهبود سئوی سایت شما کمک کند.
اعتبارسنجی فرمها یکی از مهمترین جنبههای تجربه کاربری در صفحات وب است. با استفاده از جاوااسکریپت و مدیریت رویدادهای فرم، میتوانید دادههای وارد شده توسط کاربران را بررسی کرده و از ورود اطلاعات نامعتبر جلوگیری کنید. همچنین با بهینهسازی تجربه کاربری و استفاده از تکنیکهای مدرن اعتبارسنجی، میتوانید عملکرد سایت و رتبهبندی آن در موتورهای جستجو را بهبود دهید.
نظری یافت نشد
کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius
9م آبان 1403
مطالعه بیشتر
تفاوت Callbacks و Promises در جاوا اسکریپت: مقایسه جامع با مثالها
30م مهر 1403
مطالعه بیشتر
مفاهیم پیشرفته در کلاسها و وراثت (Super, Extends) در جاوا اسکریپت: راهنمای کامل و مثالها
29م مهر 1403
مطالعه بیشتر
مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی
11م آبان 1403
مطالعه بیشتر
آموزش CSS Blend Modes: ادغام رنگها و تصاویر برای طراحی وب جذاب
18م شهریور 1402
مطالعه بیشتر
آموزش mix-blend-mode و background-blend-mode در CSS: ترکیب رنگها و ایجاد افکتهای جذاب
12م آبان 1403
مطالعه بیشتر
الگوهای رایج برنامهنویسی ناهمگام در جاوا اسکریپت: Promise.race، Promise.all، و Promise.any کامل و مثالها
1م آبان 1403
مطالعه بیشتر
آموزش تکنیکهای پیشرفته CSS Grid: طراحی ساختارهای پیچیده و واکنشگرا
18م شهریور 1402
مطالعه بیشتر
آموزش تغییر المانهای DOM: ویرایش متن، سبکها و کلاسها در جاوا اسکریپت - راهنمای کامل با مثالها
2م آبان 1403
مطالعه بیشتر
آموزش ایجاد، دسترسی و اصلاح آرایهها در جاوا اسکریپت: راهنمای کامل
4م مهر 1403
مطالعه بیشتر
آموزش استفاده از box-shadow و text-shadow در CSS: ایجاد سایههای زیبا و جذاب
11م آبان 1403
مطالعه بیشتر
آموزش اصول کار با WebSockets و ارتباطات بلادرنگ در وب: راهنمای کامل
5م آبان 1403
مطالعه بیشتر
تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد