| UI or UX | UI + UX - Single-date text field with attached calendar menu | UI + UX - Grouped manual exact-date entry | UI + UX - Single-choice dropdown control | UI + UX - Single-line freeform data-entry control |
| UI guidance | Render a labelled date text field with a persistent format hint and a calendar button that opens a month grid aligned to the field. | Render day, month, and year as separate text inputs inside one fieldset with a legend that asks the full date question and a hint containing a valid example date. | Render a persistent label, hint text, native closed value, finite option list, selected option, and validation state. | Render a persistent label, appropriately sized single-line input, optional hint, visible focus state, and nearby error text that is programmatically associated with the field. |
| UX guidance | Use a date picker when choosing a date requires calendar context such as weekday, nearby availability, booking windows, deadlines, or recent/future scheduling. | Use date input when users already know the exact date or can look it up without needing calendar context. | Help users choose one value from a moderate known list without showing every option permanently. | Use text input for short freeform answers that users can type or paste and that cannot be accurately represented as a fixed option choice. |
| Good UI | An appointment booking field shows Appointment date, hint mm/dd/yyyy, a calendar button, July 2026 grid, disabled weekends, today marker, and selected July 14 date. | A passport issued question uses a fieldset legend, hint example 27 3 2007, separate Day, Month, and Year labels, numeric input mode, and a group error that names the missing year. | Persistent label, hint text, visible selected value, readable options, and clear required validation state. | A reference-name field has a visible label, hint, medium width, focus ring, and error message beneath the hint when submitted empty. |
| Bad UI | A date of birth field opens today with no text fallback and forces users to page backward month by month through decades. | A single date field shows DD/MM/YYYY inside the input and removes the only instruction when users start typing. | Placeholder as the only label. | The only instruction is placeholder text that disappears when the user starts typing. |
| Good UX | A user opens the calendar, sees weekends unavailable, moves to August, chooses Tuesday 11 August 2026, and reviews stored value 2026-08-11. | A user types 7 Jan 1984, sees month normalized to 01, submits, and reviews canonical value 1984-01-07. | Users can open, scan, choose one value, and review the selected value after close. | A user types or pastes a short reference, submits it, and the interface confirms the stored value without changing their wording. |
| Bad UX | A user selects a disabled Saturday because it was only dimmed, then loses their previous month when the error appears. | A user pastes a known birth date into a masked field and the interface discards separators and jumps focus unpredictably. | Hiding two obvious critical choices in a dropdown. | Validation fires on the first focus event and blocks typing before the user has had a chance to answer. |
| Best fit | Users are scheduling, booking, planning, or selecting a recent or future date. | Users already know the exact date or can look it up easily. | The user chooses one option from a moderate known list. | The answer is short and user-authored. |
| Avoid when | Users already know the exact date and do not need calendar context. | Users are unlikely to know the exact date. | The option set is short and comparison matters. | The answer is a paragraph, comment, address block, or explanation requiring multiple lines. |
| Required state | Closed labelled text field with visible date-format hint and calendar button. | Empty untouched grouped date fields with legend, hint, and visible part labels. | Closed state with empty option or current selected value. | Empty untouched state with persistent label and optional hint. |
| Accessibility burden | Use a visible label and persistent hint for the text field; do not rely only on text inside the field. | Group the three inputs in a fieldset with a legend that states the full date question. | Prefer native semantics or implement equivalent name, role, state, and keyboard behavior. | Associate every text input with a visible label or equivalent accessible name that matches the visible question. |
| Common misuse | Using a calendar picker for a date of birth or other remembered historic date. | Using one freeform field with disappearing format instructions. | Custom select with no keyboard support or hidden selected state. | Using placeholder text as the only label or instruction. |