1. ความเข้าใจเกี่ยวกับ x-model
กับ Checkbox และ Radio
x-model
ช่วยจัดการค่าของ Checkbox และ Radio Button อย่างง่ายดาย โดยผูกค่าระหว่างตัวแปร State กับอินพุตประเภทเหล่านี้
- Checkbox:
- ใช้เพื่อเลือกค่าที่เป็น true/false หรือ Array (ในกรณีที่มีหลายตัวเลือก)
- Radio Button:
- ใช้เลือกค่าที่เฉพาะเจาะจงจากกลุ่มตัวเลือก
2. การใช้ x-model
กับ Checkbox
ตัวอย่าง 1: Checkbox เดี่ยว
<div x-data="{ agree: false }">
<label>
<input type="checkbox" x-model="agree">
I agree to the terms and conditions
</label>
<p x-text="agree ? 'Agreed' : 'Not Agreed'"></p>
</div>
คำอธิบาย:
x-model="agree"
ผูกค่าagree
กับสถานะของ Checkbox- ค่า
agree
จะเป็นtrue
เมื่อ Checkbox ถูกเลือก และfalse
เมื่อไม่ถูกเลือก
ตัวอย่าง 2: Checkbox หลายตัวเลือก (Array)
<div x-data="{ selectedFruits: [] }">
<label>
<input type="checkbox" value="Apple" x-model="selectedFruits">
Apple
</label>
<label>
<input type="checkbox" value="Banana" x-model="selectedFruits">
Banana
</label>
<label>
<input type="checkbox" value="Cherry" x-model="selectedFruits">
Cherry
</label>
<p>Selected fruits: <span x-text="selectedFruits.join(', ')"></span></p>
</div>
คำอธิบาย:
x-model="selectedFruits"
ผูกค่าselectedFruits
เป็น Array- เมื่อเลือก Checkbox ค่าใน
value
จะถูกเพิ่มเข้าในselectedFruits
- แสดงรายการผลไม้ที่เลือกใน
<span>
3. การใช้ x-model
กับ Radio Button
ตัวอย่าง 1: การเลือกเพียงหนึ่งตัวเลือก
<div x-data="{ gender: '' }">
<label>
<input type="radio" name="gender" value="Male" x-model="gender">
Male
</label>
<label>
<input type="radio" name="gender" value="Female" x-model="gender">
Female
</label>
<p>Your gender is: <span x-text="gender"></span></p>
</div>
คำอธิบาย:
x-model="gender"
ผูกค่าgender
กับ Radio Button- ค่า
gender
จะถูกตั้งค่าเป็นvalue
ของ Radio Button ที่ถูกเลือก
ตัวอย่าง 2: การใช้ Radio Button กับค่าที่ซับซ้อน
<div x-data="{ selectedPlan: {} }">
<label>
<input type="radio" name="plan" :value="{ id: 1, name: 'Basic' }" x-model="selectedPlan">
Basic Plan
</label>
<label>
<input type="radio" name="plan" :value="{ id: 2, name: 'Premium' }" x-model="selectedPlan">
Premium Plan
</label>
<p x-text="`Selected Plan: ${selectedPlan.name || 'None'}`"></p>
</div>
คำอธิบาย:
- ใช้
:value
เพื่อกำหนดค่าที่เป็น Object - เมื่อ Radio Button ถูกเลือก ค่า
selectedPlan
จะกลายเป็น Object ที่สอดคล้องกับvalue
4. การใช้ x-model
กับ Checkbox และ Radio ในการประยุกต์ใช้งาน
ตัวอย่าง: ฟอร์มที่มี Checkbox และ Radio Button
<div x-data="{ preferences: { newsletter: false, notifications: '', } }">
<h3>Preferences</h3>
<label>
<input type="checkbox" x-model="preferences.newsletter">
Subscribe to Newsletter
</label>
<p x-text="preferences.newsletter ? 'Subscribed' : 'Not Subscribed'"></p>
<h4>Notification Method</h4>
<label>
<input type="radio" name="notifications" value="Email" x-model="preferences.notifications">
Email
</label>
<label>
<input type="radio" name="notifications" value="SMS" x-model="preferences.notifications">
SMS
</label>
<p x-text="preferences.notifications ? `Notifications via: ${preferences.notifications}` : 'No preference selected'"></p>
</div>
คำอธิบาย:
preferences.newsletter
ผูกกับ Checkbox เพื่อเลือกสมัครรับข่าวสารpreferences.notifications
ผูกกับ Radio Button เพื่อเลือกวิธีรับการแจ้งเตือน
5. ข้อควรระวังในการใช้ x-model
กับ Checkbox และ Radio
- การตั้งชื่อ Name ใน Radio:
- Radio Button ในกลุ่มเดียวกันต้องมี Attribute
name
เหมือนกัน
- Radio Button ในกลุ่มเดียวกันต้องมี Attribute
- ค่าของ Checkbox:
- ต้องกำหนด
value
ที่ชัดเจนเมื่อใช้กับ Array
- ต้องกำหนด
- การใช้ Modifiers:
- สามารถใช้ Modifiers เช่น
.lazy
,.number
,.trim
ได้ในกรณีที่ต้องการปรับพฤติกรรม
- สามารถใช้ Modifiers เช่น
6. การใช้ Modifiers กับ Checkbox และ Radio
ตัวอย่าง: .number
<div x-data="{ ageGroup: 0 }">
<label>
<input type="radio" name="age" value="18" x-model.number="ageGroup">
18-25
</label>
<label>
<input type="radio" name="age" value="26" x-model.number="ageGroup">
26-35
</label>
<p x-text="`Selected age group: ${ageGroup}`"></p>
</div>
คำอธิบาย:
.number
แปลงค่าที่ได้รับจาก Radio Button เป็นตัวเลข
7. สรุป
ในบทนี้ คุณได้เรียนรู้วิธีใช้ x-model
กับ Checkbox และ Radio Button เพื่อจัดการค่าของอินพุตในฟอร์ม ตัวอย่างที่นำเสนอครอบคลุมการใช้งานตั้งแต่พื้นฐานไปจนถึงการประยุกต์ใช้กับข้อมูลที่ซับซ้อน ในบทถัดไป เราจะพูดถึงการใช้ x-model
กับ Select และ Dropdown เมนู!