فرمها یکی از مهمترین بخشهای تعاملات کاربر با صفحات وب هستند. با استفاده از جاوااسکریپت، میتوانید تعاملات فرمها را کنترل کرده و از اعتبارسنجی (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 مناسب مانند
بهینهسازی برای سئو: فرمهایی که سریع بارگذاری میشوند و تجربه کاربری بهتری ارائه میدهند، در رتبهبندی گوگل تاثیر مثبتی دارند. بنابراین، اعتبارسنجی سمت کاربر و استفاده بهینه از منابع میتواند به بهبود سئوی سایت شما کمک کند.
اعتبارسنجی فرمها یکی از مهمترین جنبههای تجربه کاربری در صفحات وب است. با استفاده از جاوااسکریپت و مدیریت رویدادهای فرم، میتوانید دادههای وارد شده توسط کاربران را بررسی کرده و از ورود اطلاعات نامعتبر جلوگیری کنید. همچنین با بهینهسازی تجربه کاربری و استفاده از تکنیکهای مدرن اعتبارسنجی، میتوانید عملکرد سایت و رتبهبندی آن در موتورهای جستجو را بهبود دهید.
نظری یافت نشد
واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنشگرا
11م آبان 1403
مطالعه بیشتر
آموزش استفاده از ماژولها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل
5م آبان 1403
مطالعه بیشتر
آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیرهسازی دادهها در مرورگر
3م آبان 1403
مطالعه بیشتر
JSX و رندرینگ مؤثر در React.js: بهینهسازی کامپوننتها و بهبود عملکرد
28م شهریور 1402
مطالعه بیشتر
استفاده از Viewports و Viewport Units در CSS: طراحی واکنشگرا با vw، vh، vmin و vmax
16م آبان 1403
مطالعه بیشتر
مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی
11م آبان 1403
مطالعه بیشتر
آموزش قالببندی متن در HTML: استفاده از تگها و CSS برای استایلدهی
23م مرداد 1402
مطالعه بیشتر
کار با فیلترهای CSS: آموزش استفاده از blur، brightness و contrast برای افکتهای تصویری جذاب
11م آبان 1403
مطالعه بیشتر
استفاده از calc در CSS: محاسبات پویا برای طراحیهای منعطف
12م آبان 1403
مطالعه بیشتر
آموزش ایجاد و حذف المانهای DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی
2م آبان 1403
مطالعه بیشتر
آموزش HTML: اولین گام برای طراحی سایت و سئو حرفهای
18م مرداد 1402
مطالعه بیشتر
آموزش متغیرهای سفارشی (Custom Properties) در CSS: نحوه تعریف و استفاده از var
18م شهریور 1402
مطالعه بیشتر
تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد