0Pricing
jQuery Academy · บทเรียน

การจัดการช่องกรอกแบบฟอร์มแบบไดนามิก

เรียนรู้การเพิ่ม ลบ และแก้ไขช่องกรอกแบบฟอร์มแบบไดนามิกตามข้อมูลที่ผู้ใช้ป้อน เพื่อสร้างส่วนติดต่อแบบฟอร์มที่ปรับเปลี่ยนได้และโต้ตอบได้โดยใช้ jQuery

การจัดการช่องกรอกแบบฟอร์มแบบไดนามิก เป็นบทเรียน jQuery Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน jQuery Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส jQuery Academy มีบทเรียนทั้งหมด 3 บทเรียน

แบบฟอร์มแบบไดนามิก: เหตุผลและวิธีการ

แบบฟอร์มมักมีโครงสร้างตายตัว แต่เว็บแอปพลิเคชันสมัยใหม่ต้องอาศัยการโต้ตอบ การจัดการช่องข้อมูลในแบบฟอร์มแบบไดนามิกช่วยให้คุณเปลี่ยนโครงสร้างของแบบฟอร์มได้แบบเรียลไทม์

ซึ่งหมายความว่าคุณสามารถเพิ่ม ลบ หรือแก้ไขช่องรับข้อมูลขณะที่ผู้ใช้โต้ตอบกับหน้าเว็บได้ ทำให้ประสบการณ์ของผู้ใช้ดีขึ้นมากและแบบฟอร์มปรับเปลี่ยนได้ยิ่งขึ้น!

การเพิ่มช่องข้อมูล: พื้นฐาน

แนวคิดหลักของการเพิ่มช่องข้อมูลคือการสร้างองค์ประกอบ HTML ใหม่และแทรกองค์ประกอบเหล่านั้นลงใน Document Object Model (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 หลังจากโหลดหน้าเว็บครั้งแรก

บทถัดไป เราจะเจาะลึกเรื่องการตรวจสอบความถูกต้องของแบบฟอร์มฝั่งไคลเอนต์!

คำถามที่พบบ่อย

บทเรียน “การจัดการช่องกรอกแบบฟอร์มแบบไดนามิก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดการช่องกรอกแบบฟอร์มแบบไดนามิก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส jQuery Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส jQuery Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการช่องกรอกแบบฟอร์มแบบไดนามิก”

เรียนรู้การเพิ่ม ลบ และแก้ไขช่องกรอกแบบฟอร์มแบบไดนามิกตามข้อมูลที่ผู้ใช้ป้อน เพื่อสร้างส่วนติดต่อแบบฟอร์มที่ปรับเปลี่ยนได้และโต้ตอบได้โดยใช้ jQuery คุณปฏิบัติ jQuery Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน jQuery Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน jQuery Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน

บทเรียน “การจัดการช่องกรอกแบบฟอร์มแบบไดนามิก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน jQuery Academy นี้ได้ไหม

ได้ บทเรียน jQuery Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจัดการช่องกรอกแบบฟอร์มแบบไดนามิก
  2. ตรรกะการตรวจสอบแบบฟอร์มฝั่งไคลเอ็นต์
  3. การส่งแบบฟอร์มและข้อมูลตอบกลับด้วย AJAX
← กลับไปที่ jQuery Academy