การรับข้อมูลจากผู้ใช้ด้วย 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 นั้นใช้สำหรับป้อนข้อมูลอะไรforattribute ใน<label>เชื่อมโยงกับidattribute ใน<input>id: Attribute ที่ใช้กำหนด ID เฉพาะให้กับ input field เพื่อให้เราสามารถอ้างอิงถึงมันได้ใน JavaScriptname: Attribute ที่ใช้กำหนดชื่อให้กับ input field ชื่อนี้จะถูกใช้เมื่อส่งข้อมูลฟอร์มไปยัง serverrowsและ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) ต่างๆ บนเว็บไซต์ ซึ่งจะช่วยให้เว็บไซต์ของเรามีความน่าสนใจและใช้งานง่ายยิ่งขึ้น