คอมโพเนนต์ทั้งหมด
Field
ป้ายกำกับ คำแนะนำ และข้อผิดพลาด ผูก ARIA ให้ครบ
ui/field.tsxServer safeโครงสร้าง
ป้ายกำกับอยู่บน ช่องกรอกตรงกลาง คำแนะนำและข้อผิดพลาดอยู่ใต้ช่อง Field ผูก id, aria-describedby และ aria-invalid ให้เอง
ใช้สำหรับเข้าสู่ระบบและรับใบเสร็จ
<Field label="อีเมล" hint="ใช้สำหรับเข้าสู่ระบบและรับใบเสร็จ" required>
<Input type="email" autoComplete="email" />
</Field>ข้อผิดพลาด
บอกว่าผิดอะไรและแก้อย่างไร แสดงหลังผู้ใช้ออกจากช่องหรือกดส่ง ไม่ใช่ระหว่างพิมพ์
ใส่เบอร์ 10 หลัก เช่น 0812345678
<Field label="เบอร์โทรศัพท์" error="ใส่เบอร์ 10 หลัก เช่น 0812345678">
<Input type="tel" defaultValue="08123" />
</Field>ไม่บังคับ
ถ้าฟอร์มส่วนใหญ่บังคับ ให้ติดป้ายเฉพาะช่องที่ไม่บังคับ
<Field label="ชื่อโรงเรียน" optional>
<Input />
</Field>Props
| Prop | Type | Default | คำอธิบาย |
|---|---|---|---|
label | ReactNode | - | ป้ายกำกับที่มองเห็น บังคับ |
hint | ReactNode | - | คำแนะนำใต้ช่อง ผูกด้วย aria-describedby |
error | ReactNode | - | ข้อความผิดพลาด ตั้ง aria-invalid ให้ช่องกรอก |
required | boolean | false | เครื่องหมาย * และ required บนช่องกรอก |
optional | boolean | false | ป้าย (ไม่บังคับ) |
aside | ReactNode | - | ด้านขวาของแถวป้าย เช่น ตัวนับหรือลิงก์ลืมรหัสผ่าน |
children | ReactElement | - | ช่องกรอกหนึ่งตัว |
การเข้าถึง
- ป้ายกำกับเป็น <label for> จริง กดที่ป้ายแล้วโฟกัสช่องได้
- คำแนะนำและข้อผิดพลาดถูกอ่านต่อจากป้ายเมื่อโฟกัสช่อง
- ข้อผิดพลาดมีไอคอนและข้อความ ไม่ได้บอกด้วยสีอย่างเดียว
ใช้เมื่อไร
ควรทำ
- ป้ายสั้นเป็นคำนาม เช่น อีเมล
- บอกรูปแบบที่ต้องการในคำแนะนำ ก่อนผู้ใช้ทำผิด
- จัดช่องเป็นคอลัมน์เดียว
ไม่ควรทำ
- ใช้ placeholder แทนป้าย
- แสดงข้อผิดพลาดตั้งแต่ยังไม่พิมพ์
- เขียนข้อผิดพลาดว่า ข้อมูลไม่ถูกต้อง โดยไม่บอกวิธีแก้