ช่วยผู้ใช้ป้อนข้อมูลในแบบฟอร์ม

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

องค์ประกอบของแบบฟอร์มคืออะไร

คุณจะเห็นองค์ประกอบ <input> 2 รายการ ได้แก่ <input type="text"> และ <input type="file"> เหตุใดจึงดูแตกต่างกัน

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

ป้ายกำกับสำหรับองค์ประกอบของแบบฟอร์ม

สมมติว่าคุณต้องการเพิ่มอินพุตที่ผู้ใช้สามารถป้อนสีที่ชื่นชอบได้ โดยคุณต้องเพิ่มองค์ประกอบ <input> ลงในแบบฟอร์ม แต่ผู้ใช้จะทราบได้อย่างไรว่าควรกรอกสีที่ชอบ

หากต้องการอธิบายการควบคุมแบบฟอร์ม ให้ใช้ <label> สำหรับการควบคุมแบบฟอร์มแต่ละรายการ

<label for="color">What is your favorite color?</label>
<input type="text" id="color" name="color">

แอตทริบิวต์ for ในองค์ประกอบป้ายกำกับตรงกับแอตทริบิวต์ id ในอินพุต

บันทึกข้อมูลจากผู้ใช้

<input> ใช้เพื่อรวบรวมข้อมูลจากผู้ใช้ตามชื่อ

<label for="color">What is your favorite color</label>
<input type="text" id="color" name="color">

ดังที่กล่าวไว้ก่อนหน้านี้ แอตทริบิวต์ id จะเชื่อมต่อ <input> กับ <label> แล้วแอตทริบิวต์ชื่อและประเภทในตัวอย่างนี้ล่ะ

แอตทริบิวต์ชื่อ

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

ลองเปลี่ยน ชื่อของตัวควบคุมแบบฟอร์มเป็น hill หากทำอย่างถูกต้องและส่งแบบฟอร์ม คุณจะเห็น hill ใน URL

ประเภทอินพุต

มีประเภทการควบคุมแบบฟอร์มที่แตกต่างกัน ซึ่งมีฟีเจอร์ในตัวที่มีประโยชน์ซึ่งทำงานในเบราว์เซอร์และ แพลตฟอร์มต่างๆ เบราว์เซอร์จะแสดงอินเทอร์เฟซผู้ใช้ที่แตกต่างกัน แสดงแป้นพิมพ์บนหน้าจอที่แตกต่างกัน ใช้กฎการตรวจสอบที่แตกต่างกัน และอื่นๆ ตามแอตทริบิวต์ type ดูวิธีเปลี่ยนประเภท

เมื่อใช้ type="checkbox" ตอนนี้เบราว์เซอร์จะแสดงช่องทำเครื่องหมายแทนช่องข้อความ นอกจากนี้ ช่องทำเครื่องหมายยังมีแอตทริบิวต์เพิ่มเติมด้วย คุณตั้งค่าแอตทริบิวต์ checked เพื่อแสดงว่าเลือกแล้วได้

คุณเลือกประเภทอื่นๆ ได้อีกมากมาย เราจะมาดูรายละเอียดกันในโมดูลถัดไป

อนุญาตให้มีข้อความหลายบรรทัด

สมมติว่าคุณต้องการช่องที่ผู้ใช้เขียนความคิดเห็นได้ ในกรณีนี้ คงจะดีไม่น้อยหากผู้ใช้ป้อนข้อความได้หลายบรรทัด นี่คือวัตถุประสงค์ขององค์ประกอบ <textarea>

<label for="comment">Comment</label>
<textarea id="comment" name="comment"></textarea>

เลือกจากรายการตัวเลือก

คุณจะแสดงรายการตัวเลือกให้ผู้ใช้เลือกได้อย่างไร คุณใช้องค์ประกอบ <select> เพื่อดำเนินการนี้ได้

<label for="color">Color</label>
<select id="color" name="color">
  <option value="orange">Orange</option>
  <option value="pink">Pink</option>
</select>

ก่อนอื่นให้เพิ่มองค์ประกอบ <select> เช่นเดียวกับตัวควบคุมแบบฟอร์มอื่นๆ คุณเชื่อมต่อกับ <label> ด้วยแอตทริบิวต์ id และตั้งชื่อที่ไม่ซ้ำกันโดยใช้แอตทริบิวต์ name

ระหว่างแท็กเริ่มต้นและแท็กสิ้นสุดขององค์ประกอบ <select> คุณสามารถเพิ่มองค์ประกอบ <option> ได้หลายรายการ โดยแต่ละรายการจะแสดงถึงตัวเลือก 1 รายการ

แต่ละตัวเลือกมีแอตทริบิวต์ value ที่ไม่ซ้ำกัน คุณจึงแยกความแตกต่างได้เมื่อประมวลผลข้อมูลแบบฟอร์ม ข้อความภายในองค์ประกอบตัวเลือกคือค่าที่ผู้ใช้อ่านได้

หากคุณส่งแบบฟอร์มโดยใช้<select>นี้โดยไม่เปลี่ยนตัวเลือก คำขอจะมีcolor=orange แต่เบราว์เซอร์จะรู้ได้อย่างไรว่าควรใช้ตัวเลือกใด

เบราว์เซอร์จะใช้ตัวเลือกแรกในรายการ เว้นแต่ในกรณีต่อไปนี้

  • องค์ประกอบ <option> รายการหนึ่งมีแอตทริบิวต์ selected
  • ผู้ใช้เลือกตัวเลือกอื่น

เลือกตัวเลือกไว้ล่วงหน้า

แอตทริบิวต์ selected ช่วยให้คุณเลือกตัวเลือกไว้ล่วงหน้าได้ ซึ่งจะกลายเป็นค่าเริ่มต้นโดยไม่คำนึงถึงลำดับที่กำหนดองค์ประกอบ <option>

การควบคุมแบบฟอร์มกลุ่ม

บางครั้งคุณอาจต้องจัดกลุ่มตัวควบคุมแบบฟอร์ม คุณใช้องค์ประกอบ <fieldset> เพื่อดำเนินการดังกล่าวได้

<fieldset>
    <legend>What is your favorite web technology</legend>

    <label for="html">HTML</label>
    <input type="radio" name="webfeature" value="html" id="html">

    <label for="css">CSS</label>
    <input type="radio" name="webfeature" value="css" id="css">
</fieldset>

คุณสังเกตเห็นองค์ประกอบ <legend> ภายในองค์ประกอบ <fieldset> ไหม คุณคิดว่าใช้ทำอะไร

หากคำตอบของคุณคือ "เพื่ออธิบายกลุ่มของตัวควบคุมแบบฟอร์ม" แสดงว่าคุณตอบถูก

องค์ประกอบ <fieldset> ทุกรายการต้องมีองค์ประกอบ <legend> เช่นเดียวกับที่ตัวควบคุมแบบฟอร์มทุกรายการต้องมีองค์ประกอบ <label> ที่เชื่อมโยง <legend> ต้องเป็นองค์ประกอบแรกใน <fieldset> ด้วย หลังจากองค์ประกอบ <legend> คุณสามารถกำหนดตัวควบคุมแบบฟอร์มที่ควรเป็นส่วนหนึ่งของกลุ่มได้

ส่งแบบฟอร์ม

หลังจากเรียนรู้วิธีเพิ่มตัวควบคุมแบบฟอร์มและจัดกลุ่มแล้ว คุณอาจสงสัยว่าผู้ใช้จะส่งแบบฟอร์มได้อย่างไร

ตัวเลือกแรกคือการใช้องค์ประกอบ <button>

<button>Submit</button>

หลังจากที่ผู้ใช้คลิกปุ่มส่ง เบราว์เซอร์จะส่งคำขอไปยัง URL ที่ระบุใน<form>ขององค์ประกอบ แอตทริบิวต์การดำเนินการ พร้อมข้อมูลทั้งหมดจากตัวควบคุมแบบฟอร์ม

นอกจากนี้ คุณยังใช้องค์ประกอบ <input> กับ type="submit" แทนองค์ประกอบ <button> ได้ด้วย โดยอินพุตจะมีลักษณะและทำงานเหมือนกับ <button> แทนที่จะใช้องค์ประกอบ <label> เพื่ออธิบาย <input> ให้ใช้แอตทริบิวต์ value แทน

<input type="submit" value="Submit">

นอกจากนี้ คุณยังส่งแบบฟอร์มได้โดยใช้ปุ่ม Enter เมื่อฟิลด์ แบบฟอร์มมีโฟกัส

ทดสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับองค์ประกอบของแบบฟอร์ม

คุณเชื่อมต่อ <label> กับตัวควบคุมแบบฟอร์มอย่างไร

for='color' ใน <label> และ name='color' ใน <input>
ลองอีกครั้งนะ
for='color' ใน <label> และ id='color' ใน <input>
ถูกต้อง
id='color' ใน <label> และ for='color' ใน <input>
ลองอีกครั้งนะ
name='color' ใน <label> และ for='color ใน <input>
ลองอีกครั้งนะ

คุณใช้อะไรสำหรับการควบคุมแบบฟอร์มหลายบรรทัด

องค์ประกอบ <input> ที่มี type='multi-line'
ลองอีกครั้งนะ
องค์ประกอบ <text>
ลองอีกครั้งนะ
องค์ประกอบ <textarea>
🎉
องค์ประกอบ <input> ที่มี type='long'
ลองอีกครั้งนะ

คุณจะส่งแบบฟอร์มได้อย่างไร

การคลิกองค์ประกอบ <button>
ถูกต้อง นี่เป็นหนึ่งในตัวเลือก
การใช้ปุ่ม Enter
ถูกต้อง นี่เป็นหนึ่งในตัวเลือก
การคลิกองค์ประกอบ <input> ที่มี type='submit'
ถูกต้อง นี่เป็นหนึ่งในตัวเลือก

แหล่งข้อมูล