| UI or UX | UI + UX - Grouped manual exact-date entry | UI + UX - Fixed-format text entry control | UI + UX - Single-line freeform data-entry control | UI + UX - Single-choice dropdown control |
| UI guidance | 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. | Show a persistent label, visible example or hint, fixed grouping, literal separators, and field-adjacent error text so users understand which characters are typed and which are supplied by the mask. | 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. | Render a persistent label, hint text, native closed value, finite option list, selected option, and validation state. |
| UX guidance | Use date input when users already know the exact date or can look it up without needing calendar context. | Use an input mask to help users enter data that has a stable character structure, especially when grouping matches the physical document, card, container code, or serial key users are copying from. | Use text input for short freeform answers that users can type or paste and that cannot be accurately represented as a fixed option choice. | Help users choose one value from a moderate known list without showing every option permanently. |
| Good UI | 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. | A container number field shows the example ABCD 123456 7, groups pasted characters into that shape, and displays the raw value ABCD1234567 before submit. | A reference-name field has a visible label, hint, medium width, focus ring, and error message beneath the hint when submitted empty. | Persistent label, hint text, visible selected value, readable options, and clear required validation state. |
| Bad UI | A single date field shows DD/MM/YYYY inside the input and removes the only instruction when users start typing. | A phone field hard-codes a domestic mask and rejects valid international numbers. | The only instruction is placeholder text that disappears when the user starts typing. | Placeholder as the only label. |
| Good UX | A user types 7 Jan 1984, sees month normalized to 01, submits, and reviews canonical value 1984-01-07. | A user pastes abcd1234567, sees ABCD 123456 7, reviews the canonical value, and fixes one middle digit without retyping the whole code. | A user types or pastes a short reference, submits it, and the interface confirms the stored value without changing their wording. | Users can open, scan, choose one value, and review the selected value after close. |
| Bad UX | A user pastes a known birth date into a masked field and the interface discards separators and jumps focus unpredictably. | A user pastes a valid value with spaces and the mask discards characters because it only supports one-character-at-a-time typing. | Validation fires on the first focus event and blocks typing before the user has had a chance to answer. | Hiding two obvious critical choices in a dropdown. |
| Best fit | Users already know the exact date or can look it up easily. | The value has a stable character pattern and users benefit from live grouping. | The answer is short and user-authored. | The user chooses one option from a moderate known list. |
| Avoid when | Users are unlikely to know the exact date. | Valid values have many lengths, regions, scripts, or exception formats. | The answer is a paragraph, comment, address block, or explanation requiring multiple lines. | The option set is short and comparison matters. |
| Required state | Empty untouched grouped date fields with legend, hint, and visible part labels. | Empty untouched state with label and visible format example. | Empty untouched state with persistent label and optional hint. | Closed state with empty option or current selected value. |
| Accessibility burden | Group the three inputs in a fieldset with a legend that states the full date question. | Keep a real visible label and do not use the mask pattern or placeholder as a substitute for the field name. | Associate every text input with a visible label or equivalent accessible name that matches the visible question. | Prefer native semantics or implement equivalent name, role, state, and keyboard behavior. |
| Common misuse | Using one freeform field with disappearing format instructions. | Using a mask because a format exists even though many valid values do not fit it. | Using placeholder text as the only label or instruction. | Custom select with no keyboard support or hidden selected state. |