0Pricing
jQuery Academy · درس

منطق التحقق من صحة النماذج من جهة العميل

طبّق قواعد تحقق متقدّمة من جهة العميل، وقدّم ملاحظات فورية للمستخدمين، واضمن سلامة البيانات قبل الإرسال باستخدام تحقق jQuery مخصّص.

منطق التحقق من صحة النماذج من جهة العميل درس مجاني في jQuery Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في jQuery Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة jQuery Academy 3 دروس في المجموع.

لماذا نتحقق من صحة النماذج على جانب العميل؟

يتحقق التحقق من صحة النموذج على جانب العميل من إدخال المستخدم قبل إرساله إلى الخادم. وهذه خطوة بالغة الأهمية لبناء تطبيقات ويب سهلة الاستخدام.

  • تحسين تجربة المستخدم: يحصل المستخدمون على ملاحظات فورية حول الأخطاء، ما يتيح لهم تصحيحها دون انتظار استجابة الخادم.
  • تقليل الحمل على الخادم: تُكتشف البيانات غير الصالحة مبكرًا، مما يجنّب الخادم معالجة طلبات غير ضرورية.
  • تفاعلات أسرع: عدم إعادة تحميل الصفحة يعني تجربة نماذج أسرع وأكثر استجابة.

ما بعد التحقق الأساسي من صحة HTML5

يوفر HTML5 سمات أساسية للتحقق من الصحة مثل required وtype="email" وpattern. ورغم فائدتها، فإنها تفتقر غالبًا إلى المرونة اللازمة لتطبيق قواعد العمل المعقدة أو عرض رسائل مخصصة.

فعلى سبيل المثال، لا يستطيع HTML5 بسهولة التحقق مما إذا كانت كلمة المرور تستوفي معايير قوة محددة (مثل أن تتكون من 8 أحرف على الأقل، وتتضمن رقمًا ورمزًا) أو مما إذا كان حقلا كلمة المرور متطابقين. وهنا يأتي دور jQuery!

اعتراض إرسال النموذج

تتمثل الخطوة الأولى في التحقق المخصص من الصحة في منع إرسال النموذج الافتراضي بواسطة المتصفح. ونستخدم لهذا الغرض معالج حدث .submit() في jQuery وevent.preventDefault().

يتيح لنا ذلك تشغيل منطق التحقق أولًا. فإذا كان النموذج صالحًا، يمكننا إرساله يدويًا بعد ذلك (أو إرساله عبر AJAX، وهو ما سنتناوله في درس آخر).

<!-- HTML part (imagine this exists) -->
<form id="myForm">
  <input type="text" id="username" required>
  <button type="submit">Submit</button>
</form>

<script>
  $(document).ready(function() {
    $('#myForm').submit(function(event) {
      // Stop the form from submitting normally
      event.preventDefault(); 
      console.log("Form submission intercepted!");
      // Here, you'd add your validation logic
    });
  });
</script>

هيكلة دالة مخصصة للتحقق من الصحة

من الممارسات الجيدة وضع منطق التحقق من الصحة داخل دالة قابلة لإعادة الاستخدام. ويمكن لهذه الدالة أن تُرجع true إذا كان النموذج صالحًا، وfalse خلاف ذلك.

بعد ذلك، يمكنكم استدعاء هذه الدالة داخل معالج حدث submit الخاص بالنموذج لتحديد ما إذا كان ينبغي متابعة الإرسال.

<!-- HTML part -->
<form id="loginForm">
  <input type="text" id="email" placeholder="Email">
  <button type="submit">Login</button>
</form>

<script>
  function validateLoginForm() {
    let isValid = true;
    const email = $('#email').val();

    if (email === '' || !email.includes('@')) {
      console.log("Invalid email!");
      isValid = false;
    }
    // More validation checks here...
    return isValid;
  }

  $(document).ready(function() {
    $('#loginForm').submit(function(event) {
      event.preventDefault();
      if (validateLoginForm()) {
        console.log("Form is valid! Submitting...");
        // $(this).off('submit').submit(); // To submit programmatically
      } else {
        console.log("Form has errors. Please fix.");
      }
    });
  });
</script>

التحقق من طول حقل النص

من قواعد التحقق الشائعة التحقق من الحد الأدنى أو الأقصى لطول الإدخال النصي. ويمكننا تنفيذ ذلك بسهولة من خلال الحصول على قيمة الإدخال باستخدام .val() والتحقق من خاصية .length فيه.

لنفرض حدًا أدنى لطول اسم المستخدم يبلغ 5 أحرف.

<!-- HTML part -->
<form id="userForm">
  <input type="text" id="username" placeholder="Username">
  <button type="submit">Create User</button>
</form>

<script>
  function validateUsernameLength() {
    const username = $('#username').val();
    if (username.length < 5) {
      console.log("Username must be at least 5 characters long.");
      return false;
    }
    return true;
  }

  $(document).ready(function() {
    $('#userForm').submit(function(event) {
      event.preventDefault();
      if (validateUsernameLength()) {
        console.log("Username is valid!");
      } else {
        console.log("Validation failed.");
      }
    });
  });
</script>

تقديم ملاحظات فورية للمستخدم

لا يكفي تسجيل الأخطاء في وحدة التحكم فحسب! نحتاج إلى عرض ملاحظات واضحة وفورية مباشرةً على الصفحة. ويمكنكم إضافة رسائل خطأ بجوار الحقول أو تمييز الإدخالات غير الصالحة.

سنضيف عنصر <span> لعرض رسالة خطأ عندما يكون اسم المستخدم قصيرًا جدًا.

<!-- HTML part -->
<form id="userFormFeedback">
  <label for="usernameFeedback">Username:</label>
  <input type="text" id="usernameFeedback" placeholder="Min 5 chars">
  <span id="usernameError" style="color: red;"></span>
  <button type="submit">Create User</button>
</form>

<script>
  $(document).ready(function() {
    $('#userFormFeedback').submit(function(event) {
      event.preventDefault();
      const username = $('#usernameFeedback').val();
      const $errorSpan = $('#usernameError');

      if (username.length < 5) {
        $errorSpan.text("Username too short!");
        $('#usernameFeedback').css('border', '1px solid red');
      } else {
        $errorSpan.text("");
        $('#usernameFeedback').css('border', '');
        console.log("Username is valid!");
      }
    });
  });
</script>

التحقق من البريد الإلكتروني باستخدام التعبيرات النمطية

تُعد التعبيرات النمطية (regex) بالغة القيمة لمطابقة الأنماط المعقدة، مثل تنسيقات البريد الإلكتروني. وتُعد طريقة RegExp.test() في JavaScript مناسبة تمامًا لذلك.

يمكن لتعبير نمطي أساسي للبريد الإلكتروني التحقق من وجود الأحرف والرمز '@' والنطاق. تذكّروا أن التعبيرات النمطية شديدة التقييد للبريد الإلكتروني قد تصبح معقدة أكثر من اللازم، لذا احرصوا على تحقيق التوازن.

<!-- HTML part -->
<form id="emailForm">
  <label for="userEmail">Email:</label>
  <input type="text" id="userEmail" placeholder="your@example.com">
  <span id="emailError" style="color: red;"></span>
  <button type="submit">Subscribe</button>
</form>

<script>
  $(document).ready(function() {
    $('#emailForm').submit(function(event) {
      event.preventDefault();
      const email = $('#userEmail').val();
      const $errorSpan = $('#emailError');
      // Basic email regex: something@something.something
      const emailRegex = /^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/;

      if (!emailRegex.test(email)) {
        $errorSpan.text("Invalid email format.");
        $('#userEmail').css('border', '1px solid red');
      } else {
        $errorSpan.text("");
        $('#userEmail').css('border', '');
        console.log("Email is valid!");
      }
    });
  });
</script>

التحقق من النطاق الرقمي

قد تحتاجون أحيانًا إلى التأكد من وقوع رقم ضمن نطاق محدد (مثل أن يتراوح العمر بين 18 و65، أو أن تتراوح الكمية بين 1 و100). ويمكننا تحويل قيمة الإدخال إلى رقم وإجراء مقارنات بسيطة.

تذكّروا دائمًا تحليل الإدخال النصي وتحويله إلى رقم باستخدام parseInt() أو parseFloat() قبل إجراء المقارنات العددية.

<!-- HTML part -->
<form id="ageForm">
  <label for="userAge">Your Age:</label>
  <input type="number" id="userAge" placeholder="Enter age">
  <span id="ageError" style="color: red;"></span>
  <button type="submit">Submit Age</button>
</form>

<script>
  $(document).ready(function() {
    $('#ageForm').submit(function(event) {
      event.preventDefault();
      const ageInput = $('#userAge').val();
      const age = parseInt(ageInput, 10); // Convert to integer
      const $errorSpan = $('#ageError');

      if (isNaN(age) || age < 18 || age > 65) {
        $errorSpan.text("Age must be between 18 and 65.");
        $('#userAge').css('border', '1px solid red');
      } else {
        $errorSpan.text("");
        $('#userAge').css('border', '');
        console.log("Age is valid!");
      }
    });
  });
</script>

دمج قواعد تحقق متعددة

غالبًا ما تتطلب النماذج قواعد تحقق متعددة لحقل واحد أو عبر عدة حقول. ويمكنكم تسلسل عمليات التحقق هذه داخل دالة التحقق من الصحة.

من الأنماط الشائعة افتراض أن البيانات صالحة، ثم ضبط isValid = false عند فشل أي قاعدة. ويتيح لكم ذلك جمع جميع الأخطاء قبل عرضها على المستخدم.

  • استدعوا دوال المساعدة الفردية للتحقق.
  • خزّنوا النتائج في علامة منطقية.
  • اعرضوا جميع رسائل الخطأ ذات الصلة.

اختبروا مهاراتكم في التحقق من الصحة

فكروا في حقل نموذج باسم 'Product Code' يجب أن يستوفي قاعدتين:

  1. يجب أن يتكون من 6 أحرف بالضبط.
  2. يجب أن يحتوي على الأحرف الكبيرة والأرقام فقط (A-Z, 0-9).

ما مقطع jQuery الصحيح الذي يتحقق من صحة حقل الإدخال 'productCode' ويعرض رسالة خطأ؟

مراجعة: التحقق من الصحة على جانب العميل

لقد تعلمتم في هذا الدرس كيفية تنفيذ تحقق متين من صحة النماذج على جانب العميل باستخدام jQuery. وتناولنا ما يلي:

  • أهمية التحقق من الصحة على جانب العميل لتحسين تجربة المستخدم والأداء.
  • اعتراض عمليات إرسال النماذج باستخدام event.preventDefault().
  • هيكلة دوال مخصصة للتحقق من الصحة.
  • تنفيذ قواعد لطول النص وأنماط البريد الإلكتروني (regex) والنطاقات الرقمية.
  • تقديم ملاحظات واضحة وفورية للمستخدمين.

سيساعدكم إتقان هذه الأساليب على بناء نماذج أكثر تفاعلية وأقل عرضة للأخطاء!

الأسئلة الشائعة

هل درس «منطق التحقق من صحة النماذج من جهة العميل» مجاني؟

نعم — نص درس «منطق التحقق من صحة النماذج من جهة العميل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة jQuery Academy، انتقل إلى CoddyKit PRO. تتضمن دورة jQuery Academy 3 دروس في المجموع.

ماذا ستتعلم في «منطق التحقق من صحة النماذج من جهة العميل»؟

طبّق قواعد تحقق متقدّمة من جهة العميل، وقدّم ملاحظات فورية للمستخدمين، واضمن سلامة البيانات قبل الإرسال باستخدام تحقق jQuery مخصّص. تتمرن على jQuery Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ jQuery Academy؟

لا تُشترط خبرة سابقة. jQuery Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «منطق التحقق من صحة النماذج من جهة العميل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس jQuery Academy هذا؟

نعم. كل درس في jQuery Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. معالجة حقول النماذج ديناميكيًا
  2. منطق التحقق من صحة النماذج من جهة العميل
  3. إرسال النماذج عبر AJAX وتقديم الملاحظات
← العودة إلى jQuery Academy