آموزش جامع اعتبارسنجی فرم‌ها در جاوااسکریپت


🎯 اهداف یادگیری

  • درک اهمیت اعتبارسنجی فرم‌ها در سمت کلاینت
  • آشنایی با روش‌های مختلف اعتبارسنجی
  • پیاده‌سازی اعتبارسنجی با جاوااسکریپت خالص
  • استفاده از عبارات منظم برای اعتبارسنجی پیشرفته

📌 چرا اعتبارسنجی فرم مهم است؟

اعتبارسنجی فرم‌ها به دلایل زیر ضروری است:

  • تجربه کاربری بهتر: کاربران سریعاً از خطاهای خود مطلع می‌شوند
  • کاهش ترافیک سرور: از ارسال درخواست‌های نامعتبر جلوگیری می‌کند
  • امنیت بیشتر: از حملات اسکریپتی و تزریق کد جلوگیری می‌کند
  • داده‌های معتبر: اطمینان از صحت داده‌های ارسالی به سرور

📌 انواع اعتبارسنجی فرم

javascript
// اعتبارسنجی سمت کلاینت (جاوااسکریپت)
function validateForm() {
const email = document.getElementById('email').value;
if (!email.includes('@')) {
alert('لطفاً یک ایمیل معتبر وارد کنید');
return false;
}
return true;
}

انواع اعتبارسنجی:

  • اعتبارسنجی سمت کلاینت: با جاوااسکریپت در مرورگر انجام می‌شود (سریع و تعاملی)
  • اعتبارسنجی سمت سرور: با زبان‌های سمت سرور مانند PHP انجام می‌شود (ضروری برای امنیت)

📌 اعتبارسنجی فیلدهای متداول

1. اعتبارسنجی ایمیل

javascript
function validateEmail(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}

2. اعتبارسنجی شماره تلفن

javascript
function validatePhone(phone) {
const regex = /^09[0-9]{9}$/;
return regex.test(phone);
}

3. اعتبارسنجی رمز عبور

javascript
function validatePassword(password) {
// حداقل 8 کاراکتر، حداقل یک حرف بزرگ و یک عدد
const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;
return regex.test(password);
}

📌 اعتبارسنجی زمان واقعی (Real-time Validation)

اعتبارسنجی هنگام تایپ کاربر، تجربه بهتری ایجاد می‌کند:

javascript
document.getElementById('email').addEventListener('input', function(e) {
const email = e.target.value;
const errorElement = document.getElementById('emailError');
if (!email.includes('@')) {
errorElement.textContent = 'لطفاً یک ایمیل معتبر وارد کنید';
errorElement.style.display = 'block';
} else {
errorElement.style.display = 'none';
}
});

📌 اعتبارسنجی فرم کامل

نمونه کامل اعتبارسنجی یک فرم ثبت نام:

javascript
document.getElementById('registerForm').addEventListener('submit', function(e) {
e.preventDefault();
const name = document.getElementById('name').value;
const email = document.getElementById('email').value;
const password = document.getElementById('password').value;
// اعتبارسنجی نام
if (name.length < 3) {
alert('نام باید حداقل 3 کاراکتر داشته باشد');
return;
}
// اعتبارسنجی ایمیل
if (!validateEmail(email)) {
alert('لطفاً یک ایمیل معتبر وارد کنید');
return;
}
// اعتبارسنجی رمز عبور
if (!validatePassword(password)) {
alert('رمز عبور باید حداقل 8 کاراکتر و شامل حروف بزرگ و اعداد باشد');
return;
}
// اگر همه چیز درست بود، فرم ارسال شود
this.submit();
});

📌 نمایش خطاها به کاربر

نمایش خطاها به صورت کاربرپسند بسیار مهم است:

javascript
function showError(inputElement, message) {
const errorElement = inputElement.nextElementSibling;
inputElement.classList.add('error');
errorElement.textContent = message;
errorElement.style.display = 'block';
}
function clearError(inputElement) {
const errorElement = inputElement.nextElementSibling;
inputElement.classList.remove('error');
errorElement.textContent = '';
errorElement.style.display = 'none';
}

📌 تمرین عملی

فرم زیر را با اعتبارسنجی مناسب کامل کنید:

javascript
function validateLoginForm() {
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
// اعتبارسنجی نام کاربری و رمز عبور را اینجا پیاده‌سازی کنید
}

راهنمای تمرین:

  1. نام کاربری نباید خالی باشد و حداقل 4 کاراکتر داشته باشد
  2. رمز عبور باید حداقل 6 کاراکتر داشته باشد
  3. خطاها را به صورت کاربرپسند نمایش دهید
  4. اعتبارسنجی را هم هنگام تایپ و هم هنگام ارسال فرم انجام دهید

📌 قدم بعدی

در درس بعدی با Async/Await در جاوااسکریپت آشنا خواهیم شد!