Skip to main content

เนื้อหาภาษาไทย / Thai content

System guide Content reviewed

การรับข้อมูลจากผู้ใช้ด้วย HTML Forms และ JavaScript

ในบทที่แล้วเราได้เรียนรู้พื้นฐาน HTML, CSS, และ JavaScript ในบทนี้ เราได้เรียนรู้วิธีสร้างฟอร์ม HTML เพื่อรับข้อมูลจากผู้ใช้ รวมถึงการใช้ JavaScript เพื่อดึงข้อ...

การรับข้อมูลจากผู้ใช้ด้วย HTML Forms และ JavaScript

ในบทที่แล้ว เราได้เรียนรู้พื้นฐานการทำงานร่วมกันของ HTML, CSS และ JavaScript ในบทนี้ เราจะเจาะลึกลงไปอีกขั้น โดยการเรียนรู้วิธีสร้างฟอร์ม (Form) เพื่อรับข้อมูลจากผู้ใช้งาน และนำข้อมูลเหล่านั้นมาใช้งานด้วย JavaScript ซึ่งเป็นหัวใจสำคัญของการสร้างปฏิสัมพันธ์กับผู้ใช้บนเว็บไซต์

การสร้างฟอร์มด้วย HTML

ฟอร์ม HTML คือส่วนประกอบสำคัญที่ช่วยให้ผู้ใช้สามารถป้อนข้อมูลต่างๆ เช่น ชื่อ, อีเมล, ข้อความ หรือตัวเลือกต่างๆ ลงในเว็บไซต์ของเรา ฟอร์มถูกสร้างขึ้นด้วยแท็ก <form> และภายในแท็กนี้ จะมีส่วนประกอบต่างๆ ที่เรียกว่า "input fields" ซึ่งใช้สำหรับรับข้อมูลประเภทต่างๆ

โครงสร้างพื้นฐานของฟอร์ม HTML มีดังนี้:

<form action="#" method="post">
  <!-- Input fields ต่างๆ จะอยู่ตรงนี้ -->
</form>
  • <form>: แท็กหลักที่ใช้สร้างฟอร์ม
  • action: Attribute ที่ระบุ URL ที่จะส่งข้อมูลฟอร์มไปเมื่อผู้ใช้กดปุ่ม submit (ในตัวอย่างนี้ใช้ "#" ซึ่งหมายถึงหน้าปัจจุบัน)
  • method: Attribute ที่ระบุวิธีการส่งข้อมูล (เช่น "post" หรือ "get") โดยทั่วไป "post" จะถูกใช้สำหรับการส่งข้อมูลจำนวนมากหรือข้อมูลที่ต้องการความปลอดภัยมากกว่า

การใช้ Input Types ต่างๆ

Input fields เป็นส่วนประกอบสำคัญภายในฟอร์มที่ใช้รับข้อมูลจากผู้ใช้ HTML มี input types ที่หลากหลายให้เลือกใช้ ขึ้นอยู่กับประเภทของข้อมูลที่ต้องการรับ ตัวอย่าง input types ที่พบบ่อย:

  • text: สำหรับรับข้อความทั่วไป (เช่น ชื่อ, ที่อยู่)
  • password: สำหรับรับรหัสผ่าน (ข้อความที่ป้อนจะถูกซ่อน)
  • email: สำหรับรับอีเมล (มีการตรวจสอบรูปแบบอีเมลเบื้องต้น)
  • number: สำหรับรับตัวเลข
  • checkbox: สำหรับให้ผู้ใช้เลือกตัวเลือกได้หลายรายการ
  • radio: สำหรับให้ผู้ใช้เลือกตัวเลือกได้เพียงรายการเดียว
  • textarea: สำหรับรับข้อความยาวๆ (เช่น ข้อความแสดงความคิดเห็น)
  • submit: ปุ่มสำหรับส่งข้อมูลฟอร์ม

ตัวอย่างการใช้งาน input types:

<form action="#" method="post">
  <label for="name">ชื่อ:</label><br>
  <input type="text" id="name" name="name"><br><br>

  <label for="email">อีเมล:</label><br>
  <input type="email" id="email" name="email"><br><br>

  <label for="message">ข้อความ:</label><br>
  <textarea id="message" name="message" rows="4" cols="50"></textarea><br><br>

  <input type="submit" value="ส่งข้อความ">
</form>

คำอธิบายเพิ่มเติม:

  • <label>: ใช้สำหรับกำหนดป้ายกำกับ (label) ให้กับ input field ช่วยให้ผู้ใช้เข้าใจว่าช่อง input นั้นใช้สำหรับป้อนข้อมูลอะไร
  • for attribute ใน <label> เชื่อมโยงกับ id attribute ใน <input>
  • id: Attribute ที่ใช้กำหนด ID เฉพาะให้กับ input field เพื่อให้เราสามารถอ้างอิงถึงมันได้ใน JavaScript
  • name: Attribute ที่ใช้กำหนดชื่อให้กับ input field ชื่อนี้จะถูกใช้เมื่อส่งข้อมูลฟอร์มไปยัง server
  • rows และ cols ใน <textarea> กำหนดขนาดของ textarea

การดึงข้อมูลจากฟอร์มด้วย JavaScript

เมื่อผู้ใช้ป้อนข้อมูลลงในฟอร์มแล้ว เราจำเป็นต้องใช้ JavaScript เพื่อดึงข้อมูลเหล่านั้นออกมาใช้งาน JavaScript ช่วยให้เราสามารถเข้าถึง input fields ต่างๆ ในฟอร์ม และอ่านค่าที่ผู้ใช้ป้อนเข้าไปได้

วิธีที่ง่ายที่สุดในการดึงข้อมูลจากฟอร์มคือการใช้ document.getElementById() เพื่อเข้าถึง input field ที่ต้องการ จากนั้นใช้ .value เพื่ออ่านค่าที่ผู้ใช้ป้อน

<form id="myForm" action="#" method="post">
  <label for="name">ชื่อ:</label><br>
  <input type="text" id="name" name="name"><br><br>

  <button type="button" onclick="getData()">ดึงข้อมูล</button>
</form>

<script>
  function getData() {
    let name = document.getElementById("name").value;
    alert("ชื่อของคุณคือ: " + name);
  }
</script>

คำอธิบาย:

  • เราเพิ่ม id="myForm" ให้กับแท็ก <form> เพื่อให้เราสามารถอ้างอิงถึงฟอร์มได้ง่ายขึ้นใน JavaScript (แม้ว่าในตัวอย่างนี้เราจะไม่ได้ใช้โดยตรง)
  • เราสร้างปุ่ม (<button>) ที่เมื่อคลิกแล้ว จะเรียกใช้ฟังก์ชัน getData()
  • ในฟังก์ชัน getData() เราใช้ document.getElementById("name") เพื่อเข้าถึง input field ที่มี id เป็น "name"
  • จากนั้นเราใช้ .value เพื่ออ่านค่าที่ผู้ใช้ป้อนเข้าไป และเก็บไว้ในตัวแปร name
  • สุดท้าย เราใช้ alert() เพื่อแสดงค่าที่อ่านได้ในหน้าต่างแจ้งเตือน

การตรวจสอบความถูกต้องของข้อมูล (Validation)

การตรวจสอบความถูกต้องของข้อมูล (Validation) เป็นขั้นตอนสำคัญในการสร้างฟอร์มที่ดี เพื่อให้แน่ใจว่าข้อมูลที่ผู้ใช้ป้อนเข้ามานั้นถูกต้องและเป็นไปตามรูปแบบที่กำหนด ตัวอย่างเช่น เราอาจต้องการตรวจสอบว่าช่องอีเมลมีรูปแบบที่ถูกต้อง หรือช่องชื่อไม่ว่างเปล่า

เราสามารถใช้ JavaScript เพื่อตรวจสอบความถูกต้องของข้อมูลได้ ตัวอย่างเช่น:

<form id="myForm" action="#" method="post" onsubmit="return validateForm()">
  <label for="name">ชื่อ:</label><br>
  <input type="text" id="name" name="name"><br><br>

  <label for="email">อีเมล:</label><br>
  <input type="email" id="email" name="email"><br><br>

  <input type="submit" value="ส่งข้อความ">
</form>

<script>
  function validateForm() {
    let name = document.getElementById("name").value;
    let email = document.getElementById("email").value;

    if (name == "") {
      alert("กรุณากรอกชื่อ");
      return false; // ป้องกันไม่ให้ฟอร์มถูกส่ง
    }

    if (email == "") {
      alert("กรุณากรอกอีเมล");
      return false; // ป้องกันไม่ให้ฟอร์มถูกส่ง
    }

    // เพิ่มการตรวจสอบรูปแบบอีเมล (email validation)
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(email)) {
      alert("รูปแบบอีเมลไม่ถูกต้อง");
      return false; // ป้องกันไม่ให้ฟอร์มถูกส่ง
    }

    return true; // อนุญาตให้ส่งฟอร์ม
  }
</script>

คำอธิบาย:

  • เราเพิ่ม onsubmit="return validateForm()" ให้กับแท็ก <form> ซึ่งหมายความว่าเมื่อผู้ใช้กดปุ่ม submit ฟังก์ชัน validateForm() จะถูกเรียกใช้ก่อน
  • ในฟังก์ชัน validateForm() เราตรวจสอบว่าช่องชื่อและอีเมลว่างเปล่าหรือไม่ ถ้าว่างเปล่า จะแสดงข้อความแจ้งเตือนและ return false เพื่อป้องกันไม่ให้ฟอร์มถูกส่ง
  • เราเพิ่มการตรวจสอบรูปแบบอีเมลโดยใช้ Regular Expression (emailRegex) ถ้าอีเมลไม่เป็นไปตามรูปแบบ จะแสดงข้อความแจ้งเตือนและ return false
  • ถ้าข้อมูลถูกต้องทั้งหมด ฟังก์ชันจะ return true ซึ่งอนุญาตให้ฟอร์มถูกส่ง

ข้อผิดพลาดที่พบบ่อย:

  • ลืมกำหนด id ให้กับ input field ทำให้ไม่สามารถเข้าถึง input field ได้ใน JavaScript
  • ใช้ name ซ้ำกันใน input fields ที่ควรมีค่าแตกต่างกัน
  • ลืม return false เมื่อข้อมูลไม่ถูกต้อง ทำให้ฟอร์มถูกส่งไปทั้งๆ ที่มีข้อผิดพลาด
  • ไม่ได้ตรวจสอบข้อมูลที่สำคัญ เช่น ความยาวของรหัสผ่าน หรือรูปแบบของเบอร์โทรศัพท์

กรณีใช้งานจริง:

  • ฟอร์มสมัครสมาชิก: รับข้อมูลชื่อ, อีเมล, รหัสผ่าน, และข้อมูลอื่นๆ ที่จำเป็นสำหรับการสร้างบัญชีผู้ใช้
  • ฟอร์มติดต่อเรา: รับข้อมูลชื่อ, อีเมล, ข้อความ, และข้อมูลอื่นๆ ที่จำเป็นสำหรับการติดต่อกลับ
  • ฟอร์มสั่งซื้อสินค้า: รับข้อมูลชื่อ, ที่อยู่, เบอร์โทรศัพท์, และข้อมูลอื่นๆ ที่จำเป็นสำหรับการจัดส่งสินค้า

ในบทนี้ เราได้เรียนรู้วิธีสร้างฟอร์ม HTML เพื่อรับข้อมูลจากผู้ใช้ และใช้ JavaScript ดึงข้อมูลเหล่านั้นมาใช้งาน รวมถึงการตรวจสอบความถูกต้องของข้อมูล ในบทถัดไป เราจะเรียนรู้เกี่ยวกับการตอบสนองต่อเหตุการณ์ (Event Handling) ต่างๆ บนเว็บไซต์ ซึ่งจะช่วยให้เว็บไซต์ของเรามีความน่าสนใจและใช้งานง่ายยิ่งขึ้น

Office.in.th Custom Service

Want to build or adapt a system from this structure?

Office.in.th designs and develops enterprise web applications, API integrations, and public- and private-sector management systems, with long-term support.

See our software development service