#37083: Add opt-in HTML5 date/time input types for form widgets
-------------------------------------+-------------------------------------
Reporter: Denny Biasiolli | Type:
| Cleanup/optimization
Status: new | Component: Forms
Version: 6.0 | Severity: Normal
Keywords: datetime, date, | Triage Stage:
time, inputs, admin, forms | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 1
-------------------------------------+-------------------------------------
== Summary
Django's `DateInput`, `TimeInput`, and `DateTimeInput` widgets currently
render `<input type="text">` unconditionally.
Modern browsers provide native date and time pickers via `<input
type="date">`, `<input type="time">`, which offer a significantly better
user experience—especially on mobile devices—without requiring any
JavaScript.
The Django admin's `vDateField` and `vTimeField` rely on custom JavaScript
(`DateTimeShortcuts.js`) to provide calendar and clock popups. While
functional, these are less accessible and less consistent across platforms
than the native browser pickers.
My idea is to add a new global setting, `USE_HTML5_DATE_INPUT`, that when
set to `True`, switches these widgets to their HTML5 counterparts on an
opt-in basis.
The end goal it to go back on this ticket
(
https://code.djangoproject.com/ticket/29822) after (if) the current one
gets approved/merged.
== Motivation
- **Better mobile UX**: Native pickers are touch-friendly and consistent
with OS conventions. The current JS-based popups are difficult to use on
small screens.
- **Accessibility**: Browser-native pickers are built with accessibility
in mind (keyboard navigation, screen reader support) out of the box.
- **Reduced JS overhead**: When native pickers are used, the admin's
`calendar.js` and `DateTimeShortcuts.js` become unnecessary for date/time
fields.
- **Gradual rollout**: Defaulting to `False` ensures zero breaking
changes. Projects can opt in when ready and validate behavior before
committing.
--
Ticket URL: <
https://code.djangoproject.com/ticket/37083>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.