0Pricing
jQuery Academy · درس

معالجة حقول النماذج ديناميكيًا

تعلّم إضافة حقول النماذج وإزالتها وتعديلها ديناميكيًا استنادًا إلى إدخال المستخدم، وإنشاء واجهات نماذج تفاعلية قابلة للتكيّف باستخدام jQuery.

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

النماذج الديناميكية: لماذا وكيف؟

غالبًا ما تكون النماذج ثابتة، لكن تطبيقات الويب الحديثة تعتمد على التفاعلية. يتيح التعامل الديناميكي مع حقول النموذج تغيير بنية النموذج في الوقت الفعلي.

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

إضافة الحقول: الأساسيات

تتمثل الفكرة الأساسية وراء إضافة الحقول في إنشاء عناصر HTML جديدة وإدراجها في نموذج كائن المستند (DOM).

  • استخدموا jQuery لإنشاء العناصر، مثل $('').
  • استخدموا أساليب مثل .append() أو .prepend() أو .after() أو .before() لوضعها بدقة داخل النموذج.
  • تذكروا منح الحقول الجديدة سمات name مناسبة، خصوصًا لمعالجة البيانات في الواجهة الخلفية.

إضافة حقل إدخال بريد إلكتروني جديد

لنضف زرًا ينشئ عند النقر عليه حقل إدخال جديدًا للبريد الإلكتروني. لاحظوا كيفية إنشاء سلسلة HTML ثم إضافتها.

<div id="email-fields">
  <input type="email" name="email[]" placeholder="Email 1">
</div>
<button id="add-email">Add Another Email</button>

<script>
$(document).ready(function() {
  let emailCount = 1;
  $('#add-email').on('click', function() {
    emailCount++;
    const newEmailField = `
      <input type="email" name="email[]" 
             placeholder="Email ${emailCount}">
    `;
    $('#email-fields').append(newEmailField);
  });
});
</script>

إزالة الحقول: التنظيف

مثلما قد يحتاج المستخدمون إلى إضافة حقول، فإنهم يحتاجون غالبًا إلى إزالتها. يحافظ ذلك على نظافة النموذج وملاءمته لاحتياجاتهم.

تُعد طريقة .remove() في jQuery مثالية لذلك. فهي تزيل العنصر أو العناصر المحددة بالكامل من DOM، إلى جانب أي بيانات ومعالجات أحداث مرتبطة بها.

إزالة حقل إدخال محدد

لنوسّع الآن مثالنا السابق. سنضيف زرًا بعنوان الإزالة بجانب كل حقل بريد إلكتروني. سيؤدي النقر عليه إلى حذف ذلك الحقل تحديدًا.

مهم: انتبهوا إلى كيفية تعاملنا مع الأحداث الخاصة بأزرار الإزالة المضافة ديناميكيًا!

<div id="email-fields">
  <div class="email-group">
    <input type="email" name="email[]" placeholder="Email 1">
    <button class="remove-email">Remove</button>
  </div>
</div>
<button id="add-email">Add Another Email</button>

<script>
$(document).ready(function() {
  let emailCount = 1;

  $('#add-email').on('click', function() {
    emailCount++;
    const newEmailGroup = `
      <div class="email-group">
        <input type="email" name="email[]" 
               placeholder="Email ${emailCount}">
        <button class="remove-email">Remove</button>
      </div>
    `;
    $('#email-fields').append(newEmailGroup);
  });

  // Event delegation for remove buttons
  $('#email-fields').on('click', '.remove-email', function() {
    $(this).parent('.email-group').remove();
  });
});
</script>

تعديل الحقول: ضبط السمات

أحيانًا لا تحتاجون إلى إضافة حقل أو إزالته، بل إلى تغيير خصائصه فحسب. قد تكون هذه الخصائص هي value أو placeholder أو حالة disabled أو حتى name أو id.

يوفر jQuery الطريقة .attr() لسمات HTML والطريقة .prop() لخصائص DOM. وغالبًا ما يُفضّل استخدام .prop() مع السمات المنطقية مثل checked أو disabled أو selected.

تبديل حالة الحقل

إليكم مثالًا تتحكم فيه خانة اختيار في تمكين حقل إدخال نصي أو تعطيله. نستخدم .prop() لتغيير خاصية disabled.

<label>
  <input type="checkbox" id="enable-input"> Enable Input
</label>
<input type="text" id="my-input" value="Hello" disabled>

<script>
$(document).ready(function() {
  $('#enable-input').on('change', function() {
    const isChecked = $(this).is(':checked');
    $('#my-input').prop('disabled', !isChecked); // Set disabled based on checkbox state
  });
});
</script>

الأحداث في العناصر الديناميكية

من الأخطاء الشائعة أن معالجات الأحداث المباشرة، مثل $('#myButton').on('click', ...)، لا تُربط إلا بالعناصر الموجودة عند تحميل الصفحة.

بالنسبة إلى العناصر المضافة ديناميكيًا، تحتاجون إلى تفويض الأحداث. ويعني ذلك إرفاق مستمع الحدث بعنصر أب ثابت، ثم تحديد محدد للعناصر الابنة الديناميكية. تتولى طريقة .on() في jQuery هذه المهمة بكفاءة.

مثال عملي: إضافة المزيد

بدمج ما تعلمناه، إليكم نمطًا شائعًا: زر إضافة مهارة يتيح للمستخدمين إدراج مهارات متعددة، مع وجود زر إزالة خاص بكل مهارة.

لاحظوا استخدام data-id للتعريف الفريد واستخدام .closest() للعثور على العنصر الأب المراد إزالته.

<div id="skill-list">
  <div class="skill-item" data-id="1">
    <input type="text" name="skill[]" placeholder="Skill 1">
    <button class="remove-skill">Remove</button>
  </div>
</div>
<button id="add-skill">Add Skill</button>

<script>
$(document).ready(function() {
  let skillId = 1; // Unique ID for each skill item

  $('#add-skill').on('click', function() {
    skillId++;
    const newSkillItem = `
      <div class="skill-item" data-id="${skillId}">
        <input type="text" name="skill[]" 
               placeholder="Skill ${skillId}">
        <button class="remove-skill">Remove</button>
      </div>
    `;
    $('#skill-list').append(newSkillItem);
  });

  // Event delegation for remove buttons
  $('#skill-list').on('click', '.remove-skill', function() {
    // Prevent removing the very first skill if desired
    if ($('.skill-item').length > 1) {
      $(this).closest('.skill-item').remove();
    } else {
      alert("You need at least one skill!");
    }
  });
});
</script>

تحقق من النماذج الديناميكية

اختبروا مدى فهمكم للتعامل الديناميكي مع النماذج.

مراجعة: النماذج الديناميكية

تعلمتم في هذا الدرس كيفية جعل النماذج أكثر تفاعلية وسهولة للمستخدم من خلال إضافة الحقول وإزالتها وتعديلها ديناميكيًا باستخدام jQuery.

  • استخدموا .append() و.prepend() و.after() و.before() لإضافة العناصر.
  • استخدموا .remove() لحذف العناصر.
  • استخدموا .attr() و.prop() لتعديل سمات العناصر وخصائصها.
  • والأهم، استخدموا تفويض الأحداث مع .on() للتعامل مع الأحداث في العناصر التي تُضاف إلى DOM بعد تحميل الصفحة الأولي.

سننتقل بعد ذلك إلى التحقق من صحة النماذج من جهة العميل!

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

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

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

ماذا ستتعلم في «معالجة حقول النماذج ديناميكيًا»؟

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

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

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

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

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

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

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

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

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