ฟอร์ม HTML รวบรวมข้อมูลจากผู้ใช้ด้วยช่องข้อความ, รายการแบบเลื่อนลง, ช่องเครื่องหมาย, และอื่นๆ ฟอร์มอยู่ภายในแท็ก <form> และใช้แท็ก <input> สร้างองค์ประกอบต่างๆ
ฟอร์ม HTML ให้ผู้ใช้โต้ตอบกับเว็บไซต์/แอปพลิเคชัน ส่งข้อมูลเพื่อประมวลผลและจัดเก็บ
บทช่วยสอนนี้จะตอบคำถาม "สร้างฟอร์มใน HTML ยังไง?" พร้อมตัวอย่างครอบคลุมพื้นฐานฟอร์ม, การเพิ่มช่องกรอกข้อมูล, และการส่งข้อมูลไปเซิร์ฟเวอร์
ฟอร์ม HTML
ใน HTML ฟอร์ม ประกอบด้วยเอลิเมนต์ 1 ตัวขึ้นไป รวมถึง:
- ช่องข้อความบรรทัดเดียว
- กล่องข้อความ
- กล่องรายการแบบเลื่อนลง
- ช่องเครื่องหมาย (checkboxes)
- ปุ่ม
- ปุ่มตัวเลือก (radio buttons)
องค์ประกอบเหล่านี้ (ยกเว้นปุ่มและกล่องข้อความ) ใช้แท็ก <input>
หลังผู้ใช้ส่งฟอร์ม เนื้อหาสามารถ:
- ส่งไปเซิร์ฟเวอร์เพื่อประมวลผลต่อ
- ประมวลผลโดยเบราว์เซอร์
ก่อนสร้างฟอร์ม ควรคิดถึงการออกแบบ: ต้องเก็บข้อมูลอะไร? จะทำให้ฟอร์มเรียบง่ายอย่างไร? ฟอร์มใหญ่เกินไปจะทำให้ผู้ใช้น่าจะไม่กรอก
สำหรับบทช่วยสอนนี้ เราจะสร้างฟอร์มสำหรับเว็บไซต์ร้านกาแฟ "Three Brothers Coffee House" ฟอร์มรับข้อมูล 4 อย่าง:
- ชื่อ ผู้ใช้
- อีเมล ผู้ใช้
- ว่าผู้ใช้เคย มาเยือน ร้านหรือไม่
- ข้อความ ที่ผู้ใช้ต้องการส่ง
ฟอร์มต้องมี 4 องค์ประกอบ และปุ่มส่ง (submit) 1 ปุ่ม
แท็ก <form> ใน HTML
ฟอร์มใน HTML อยู่ภายในแท็ก <form> ตัวอย่าง:
<form> // องค์ประกอบต่างๆ </form>
แท็ก <form> กำหนดฟอร์มใน HTML ภายในสามารถใส่องค์ประกอบฟอร์ม เช่น checkbox, ช่องข้อความบรรทัดเดียว แท็ก <form> รับแอตทริบิวต์ 2 ตัว: action และ method (จะอธิบายต่อไป)
องค์ประกอบ <input> สำหรับฟอร์ม HTML
คอนโทรลฟอร์มส่วนใหญ่ใช้ อินพุตเอลิเมนต์ รวบรวมข้อมูลประเภทต่างๆ จากผู้ใช้ กำหนดด้วยแท็ก <input>
รูปแบบของ <input> ขึ้นอยู่กับแอตทริบิวต์ type เช่น type="text" จะแตกต่างจาก type="radio"
ไวยากรณ์ <input>:
<input type="type" id="elementId">
type คือประเภทอินพุต ค่าที่พบบ่อย:
buttoncheckboxemailtextnumberradio
id ใช้ระบุตัวตนเฉพาะของอินพุต ใช้เข้าถึงข้อมูลที่ผู้ใช้ส่งผ่านสคริปต์ประมวลผล
กลับไปที่ Three Brothers Coffee House ฟอร์มต้องรับ 4 ข้อมูล 2 อย่างแรกคือชื่อและอีเมล ใช้ 2 แท็ก <input>:
<form> <label for="name">Name:</label><br/> <input type="text" id="name" name="name"><br /><br /> <label for="email">Email:</label><br/> <input type="email" id="email" name="email"> </form>
คลิกปุ่ม
ในเอดิเตอร์เพื่อรันโค้ด
ฟอร์มรับค่า 2 ค่า: ชื่อและอีเมล ใช้ <label> (จะอธิบายต่อไป)
แอตทริบิวต์ name ในฟอร์ม HTML
ทุกองค์ประกอบฟอร์มต้องมีแอตทริบิวต์ name ใช้ส่งเนื้อหาฟอร์ม หากไม่ระบุ ข้อมูลจะไม่ถูกส่งไปเซิร์ฟเวอร์
ในตัวอย่าง ช่อง "Name" มี name="name"> และ "Email" มี name="email">
เอลิเมนต์ <label> ใน HTML
ใช้ <label> เพิ่มฉลากให้แต่ละช่องในฟอร์ม ระบุวัตถุประสงค์และข้อมูลที่รับ รวมถึงข้อความที่โปรแกรมอ่านหน้าจอ (screen reader) จะอ่านเมื่อเจอช่องอินพุต
ไวยากรณ์ <label>:
<form> <label for="name">Name:</label><br/> <input type="text" id="name" name="name"> </form>
สร้างฟอร์มรับชื่อ ใช้ <label> ฉลาก "Name:" แอตทริบิวต์ for ต้องเท่ากับ id ของอินพุตที่เกี่ยวข้อง เพื่อผูกฉลากกับช่องกรอก
องค์ประกอบฟอร์ม HTML
กลับไปที่ Three Brothers Coffee House ต้องการ 4 ข้อมูล: ชื่อ, อีเมล, สถานะลูกค้า, ข้อความ สร้าง 2 ช่องแล้ว (ชื่อ, อีเมล) มาสร้างส่วนที่เหลือกัน
ปุ่มตัวเลือก (Radio Buttons)
ปุ่มตัวเลือกใช้บ่อยในฟอร์ม HTML ให้ผู้ใช้เลือก 1 ค่าจากจำนวนจำกัด ใช้สำหรับเพศ, ช่วงอายุ, หรือตอบใช่/ไม่
ไวยากรณ์:
<input type="radio" name="radio_button">
ฟอร์มเราต้องการถามว่าผู้ใช้เป็นลูกค้าร้าน Three Brothers หรือไม่ ใช้ radio button:
<form> <p>Are you a customer of the Three Brothers Coffee House?</p> <input type="radio" id="yes" name="customer" value="yes"> <label for="yes">Yes</label><br /> <input type="radio" id="no" name="customer" value="no"> <label for="no">No</label><br /> </form>
คลิกปุ่ม
เพื่อรันโค้ด
ผู้ใช้ส่งค่า yes หรือ no แยกวิเคราะห์: สร้าง <form>, <p> ข้อความอธิบาย, radio button ค่า yes พร้อมฉลาก "Yes", radio button ค่า no พร้อมฉลาก "No" แอตทริบิวต์ value คือข้อมูลที่ส่งไปเซิร์ฟเวอร์เมื่อผู้ใช้กดส่ง
เอลิเมนต์ <textarea> ใน HTML
เหลือช่องกรอกข้อความ (message) ใช้ <textarea>:
<form> <label for="message">Message:</label><br /> <textarea id="message" name="message"> What message do you want to send to the Three Brothers Coffee House? </textarea> </form>
สร้างฉลาก "Message:" แล้ว <textarea> พร้อมแอตทริบิวต์:
idอ้างอิงเนื้อหาหลังผู้ใช้ส่งnameจำเป็นต้องมีเพื่อส่งฟอร์ม
ข้อความเริ่มต้น "What message do you want to send to the Three Brothers Coffee House?" วางระหว่างแท็กเปิด/ปิด <textarea>
ผลลัพธ์:
คลิกปุ่ม
เพื่อรันโค้ด
ตอนนี้มีช่องข้อความ ให้ผู้ใช้ส่งข้อความไปร้านกาแฟ
ปุ่ม submit ใน HTML
พร้อมเพิ่มปุ่ม submit ไวยากรณ์:
<input type="submit" value="Submit">
ปุ่ม submit ส่งเนื้อหาฟอร์มไปยัง form handler (หน้าบนเซิร์ฟเวอร์ที่ประมวลผล) ผ่านแอตทริบิวต์ action ของ <form>
เพิ่มปุ่ม submit ให้ฟอร์มร้านกาแฟ:
<form action="/post.php"> <label for="name">Name:</label> <br/> <input type="text" id="name" name="name"> <br /> <br /> <label for="email">Email:</label> <br /> <input type="email" id="email" name="email"> <br /> <p>Are you a customer of the Three Brothers Coffee House?</p> <input type="radio" id="yes" name="customer" value="yes"> <label for="yes">Yes</label> <br /> <input type="radio" id="no" name="customer" value="no"> <label for="no">No</label> <br /><br /> <label for="message">Message:</label><br /> <textarea id="message" name="message"> What message do you want to send to the Three Brothers Coffee House? </textarea> <input type="submit" value="Submit"> </form>
เพิ่มปุ่ม submit และระบุ action ใน <form> ลิงก์ไปไฟล์จัดการฟอร์ม
การส่งฟอร์มเว็บ
หลังสร้างฟอร์ม ต้องสร้าง handler ประมวลผลข้อมูล <form> มี 2 แอตทริบิวต์ส่งข้อมูล: action และ method
แอตทริบิวต์ action ของฟอร์ม
action กำหนดตำแหน่งโค้ด form handler เมื่อส่งฟอร์ม (กดปุ่ม submit) ข้อมูลจะไปที่ handler
ตัวอย่าง ข้อมูลส่งไป post.php:
<form action="/post.php"> </form>
หากไม่ระบุ action ฟอร์มจะส่งไปหน้าปัจจุบัน
แอตทริบิวต์ method ของฟอร์ม
method ระบุ HTTP method ใช้ส่งฟอร์ม ค่าเริ่มต้นคือ GET แต่ใช้ POST หรือ method อื่นได้
ตัวอย่าง:
<form action="/post.php" method="POST"> </form>
ส่งข้อมูลด้วย HTTP POST (หากต้องการ GET ระบุ "GET" หรือเว้นว่าง เพราะเป็นค่าเริ่มต้น)
ส่วนใหญ่ควรใช้ HTTP POST เพราะ GET ทำให้ข้อมูลฟอร์มมองเห็นได้ใน address bar เช่น /post.php?name=Pauline วิธีนี้ไม่ปลอดภะ ไม่ควรใช้ GET สำหรับข้อมูลละเอียดอ่อน
สรุป
ฟอร์มเป็นฟีเจอร์สำคัญของ HTML รวบรวมและประมวลผลข้อมูลผู้ใช้
บทช่วยสอนนี้อธิบายพื้นฐานฟอร์ม HTML และวิธีสร้างฟอร์มเว็บแรก ตอนนี้คุณพร้อมออกแบบและพัฒนาฟอร์ม HTML อย่างมืออาชีพแล้ว!