ฟอร์ม HTML คืออะไร?
ฟอร์ม HTML ใช้สำหรับรับข้อมูลจากผู้เยี่ยมชมเว็บไซต์ เช่น การสมัครสมาชิก (ชื่อ, อีเมล, หมายเลขบัตรเครดิต) การสำรวจความคิดเห็น หรือการเข้าสู่ระบบ ข้อมูลที่กรอกจะถูกส่งไปยังแอปพลิเคชันแบ็กเอนด์ (PHP, Node.js, Python, CGI, ASP) เพื่อประมวลผลตามตรรกะทางธุรกิจ
โครงสร้างพื้นฐานของฟอร์ม
<form action="Script URL" method="GET|POST">
</form>
action: URL ของสคริปต์ฝั่งเซิร์ฟเวอร์ที่รับข้อมูล
method: GET (เพิ่มข้อมูลใน URL) หรือ POST (ส่งใน Request Body - ปลอดภัยกว่า)
ประเภทของ <input> (HTML4/HTML5)
ประเภทพื้นฐาน (มีมาตั้งแต่ HTML4)
| ลำดับ |
ประเภทและคำอธิบาย |
| 1 | text - ฟิลด์ข้อความทั่วไป |
| 2 | password - ฟิลด์รหัสผ่าน (ซ่อนตัวอักษร) |
| 3 | checkbox - กล่องถูกเลือกได้หลายรายการ |
| 4 | radio - ปุ่มตัวเลือก (เลือกได้อย่างใดอย่างหนึ่ง) |
| 5 | submit - ปุ่มส่งฟอร์ม |
| 6 | file - อัปโหลดไฟล์ |
| 7 | image - ปุ่มส่งฟอร์มเป็นรูปภาพ |
| 8 | hidden - ฟิลด์ซ่อน (ไม่แสดงให้ผู้ใช้เห็น) |
| 9 | select - รายการแบบเลื่อนลง (ใช้กับ <select>) |
| 10 | textarea - พื้นที่ข้อความหลายบรรทัด (ใช้ <textarea>) |
| 11 | button - ปุ่มทั่วไป (ต้องระบุ type="button|submit|reset") |
ประเภทใหม่ใน HTML5 (เพิ่มความสะดวกและการตรวจสอบข้อมูล)
| ลำดับ |
ประเภทและคำอธิบาย |
| 1 | datetime - วันที่และเวลา (UTC) ตาม ISO 8601 |
| 2 | datetime-local - วันที่และเวลา (ไม่มีโซนเวลา) |
| 3 | date - เลือกวันที่ (ปี, เดือน, วัน) |
| 4 | month - เลือกเดือนและปี |
| 5 | week - เลือกสัปดาห์และปี |
| 6 | time - เลือกเวลา |
| 7 | number - เลขเท่านั้น (มี step ควบคุมความแม่นยำ) |
| 8 | range - เลือกค่าจากช่วง (Slider) |
| 9 | email - ตรวจสอบรูปแบบอีเมลอัตโนมัติ |
| 10 | url - ตรวจสอบรูปแบบ URL อัตโนมัติ |
| 11 | tel - หมายเลขโทรศัพท์ (ไม่มีการตรวจสอบรูปแบบบังคับ) |
| 12 | color - เลือกสี (Color Picker) |
| 13 | search - กล่องค้นหา (มีไอคอนลบข้อความในบางเบราว์เซอร์) |
ตัวอย่างฟอร์มสมัครสมาชิก (Registration Form)
<!DOCTYPE html>
<html>
<body>
<h2>สมัครสมาชิก</h2>
<form action="/register" method="post">
<label>ชื่อผู้ใช้: <input type="text" name="username" placeholder="ป้อนชื่อผู้ใช้..." required></label><br>
<label>รหัสผ่าน: <input type="password" name="pwd" placeholder="ป้อนรหัสผ่าน..." required></label><br>
<label>วันเกิด: <input type="date" name="dob"></label><br>
<label>โทรศัพท์: <input type="tel" name="phone" placeholder="08X-XXX-XXXX"></label><br>
<label>อีเมล: <input type="email" name="email" placeholder="user@example.com" required></label><br><br>
<button type="submit">สมัครสมาชิก</button>
</form>
</body>
</html>
ตัวอย่างฟอร์มพร้อม Checkbox
<!DOCTYPE html>
<html>
<body>
<h2>สมัครสมาชิก พร้อมยินยอมเงื่อนไข</h2>
<form action="/register" method="post">
<label>ชื่อผู้ใช้: <input type="text" name="username" placeholder="ป้อนชื่อผู้ใช้..." size="25" required></label><br>
<label>รหัสผ่าน: <input type="password" name="pwd" placeholder="ป้อนรหัสผ่าน..." required></label><br>
<label>วันเกิด: <input type="date" name="dob" required></label><br>
<label>โทรศัพท์: <input type="tel" name="phone" placeholder="08X-XXX-XXXX"></label><br>
<label>อีเมล: <input type="email" name="email" placeholder="user@example.com" size="35" required></label><br><br>
<label><input type="checkbox" name="terms" value="agree" required> ยอมรับเงื่อนไขและนโยบายความเป็นส่วนตัว</label><br><br>
<button type="submit">สมัครสมาชิก</button>
</form>
</body>
</html>
แนวทางปฏิบัติที่ดีสำหรับฟอร์ม
- ใช้
<label> ผูกกับ <input> ผ่าน for และ id เพื่อเข้าถึงได้ง่าย (Accessibility)
- เพิ่ม
required สำหรับฟิลด์บังคับ
- ใช้
placeholder ให้ตัวอย่างรูปแบบข้อมูล
- จัดกลุ่มฟิลด์ที่เกี่ยวข้องด้วย
<fieldset> และ <legend>
- ตรวจสอบข้อมูลทั้งฝั่งไคลเอ็นต์ (HTML5 Validation) และฝั่งเซิร์ฟเวอร์
- ใช้
autocomplete ให้เหมาะสม ช่วยให้ผู้ใช้กรอกเร็วขึ้น