HTML Input Time: Umgang mit Zeiteingaben in Webformularen

Foto des Autors

By Jan

HTML-Element <input type="time"> verstehen

Das HTML-Element <input type="time"> bietet eine Möglichkeit, Benutzereingaben für Zeitangaben in Webformularen zu erfassen. Es definiert ein Eingabefeld, das speziell für die Eingabe von Uhrzeiten konzipiert ist.

### Wie funktioniert <input type="time">?

Das <input type="time">-Element stellt ein Textfeld bereit, in das Benutzer ihre Zeiteingabe eingeben können. Der Wert des Eingabefelds wird als Zeichenfolge im Format HH:MM gespeichert, wobei HH die Stunden und MM die Minuten darstellt. Die Werte können im Bereich von 00:00 bis 23:59 liegen.

### Verwendung von <input type="time"> in Webformularen

Um <input type="time"> in deinen Webformularen zu verwenden, füge einfach den folgenden Code in dein HTML-Dokument ein:

<label for="zeit">Zeit:</label>
<input type="time" id="zeit">

Dies erstellt ein Eingabefeld mit der Beschriftung "Zeit", in das Benutzer ihre Zeiteingabe eingeben können.

### Browserunterstützung und Fallbacks

Das <input type="time">-Element wird von den meisten modernen Browsern unterstützt. Für ältere Browser, die es nicht unterstützen, kannst du auf JavaScript- oder CSS-Fallbacks zurückgreifen.

JavaScript-Fallbacks
// Erstelle ein verstecktes Eingabefeld für Browser, die <input type="time"> nicht unterstützen
let hiddenInput = document.createElement('input');
hiddenInput.type = 'text';
hiddenInput.name = 'zeit';
document.body.appendChild(hiddenInput);

// Füge dem <input type="time">-Element einen Change-Listener hinzu
document.querySelector('input[type="time"]').addEventListener('change', function() {
  // Fülle das versteckte Eingabefeld mit dem Wert des <input type="time">
  hiddenInput.value = this.value;
});
CSS-Fallbacks
// Verstecke das <input type="time"> für Browser, die es nicht unterstützen
input[type="time"] {
  display: none;
}

// Zeige das versteckte Eingabefeld für Browser, die <input type="time"> nicht unterstützen
@media (not (input[type="time"]:invalid)) {
  input[type="text"][name="zeit"] {
    display: block;
  }
}

Verwendung des in Webformularen

Das HTML-Element <input type="time"> ermöglicht es dir, eine Zeiteingabe in deinen Webformularen zu sammeln. Es bietet eine benutzerfreundliche Möglichkeit für Nutzer, bestimmte Uhrzeiten einzugeben.

Festlegen des Datumsbereichs

Du kannst den zulässigen Zeiteingabebereich mit den Attributen min und max eingrenzen. Damit legst du die früheste und späteste Zeit fest, die Nutzer eingeben können. Beispiel:

<input type="time" min="09:00" max="17:00">

Standardwert festlegen

Um einen Standardwert für das Zeiteingabefeld festzulegen, verwende das Attribut value. Dies erleichtert es Nutzern, eine gängige Zeit auszuwählen, falls sie diese wünschen. Beispiel:

<input type="time" value="12:00">

Schrittgröße festlegen

Mit dem Attribut step kannst du die Schrittgröße für die Zeiteingabe festlegen. Dies bestimmt, in welchen Intervallen Nutzer die Zeit einstellen können. Beispiel:

<input type="time" step="300">

Dadurch können Nutzer die Zeit nur in 5-Minuten-Schritten (300 Sekunden) einstellen.

Platzhaltertext hinzufügen

Um einen Platzhaltertext anzuzeigen, der verschwindet, wenn Nutzer mit der Eingabe beginnen, verwende das Attribut placeholder. Beispiel:

<input type="time" placeholder="Zeit eingeben">

Browserunterstützung und Fallbacks

Das HTML-Element <input type="time"> wird seit HTML5 unterstützt und von modernen Browsern wie Chrome, Firefox, Safari und Edge nativ unterstützt. Allerdings kann es in älteren Browsern zu Problemen mit der Unterstützung kommen.

Browser, die <input type="time"> unterstützen

Die folgende Liste zeigt die Browser, die <input type="time"> unterstützen:

  • Google Chrome
  • Mozilla Firefox
  • Apple Safari
  • Microsoft Edge

Fallbacks für nicht unterstützte Browser

Wenn du sicherstellen möchtest, dass dein Formular auch in Browsern funktioniert, die <input type="time"> nicht unterstützen, kannst du Fallbacks verwenden. Es gibt mehrere Möglichkeiten, dies zu tun:

  • Polyfills: Polyfills sind JavaScript-Bibliotheken, die Funktionen hinzufügen, die in älteren Browsern nicht nativ unterstützt werden. Du kannst eine Polyfill-Bibliothek wie Timepicker.js verwenden, um die Funktionalität von <input type="time"> in nicht unterstützten Browsern zu emulieren.
  • Progressive Enhancement: Progessives Enhancement ist eine Webentwicklungstechnik, bei der du zunächst die grundlegende Funktionalität deines Formulars für alle Browser bereitstellst. Anschließend kannst du mithilfe von CSS und JavaScript optionale Funktionen hinzufügen, für die eine modernere Browserunterstützung erforderlich ist. In diesem Fall kannst du ein einfaches Texteingabefeld als Fallback für <input type="time"> verwenden.
  • Server-seitiges Rendering: Du kannst die Zeiteingabe auch serverseitig rendern. Hierbei wird ein Server verwendet, um das Formular mit einer vorformatierten Zeiteingabe zu generieren. Diese Methode eignet sich gut für statische Websites oder Websites, die ein starkes Caching verwenden.

Validierung von Zeiteingaben

Die Validierung von Zeiteingaben ist unerlässlich, um korrekte und konsistente Daten zu gewährleisten. Hier sind einige Überlegungen zur Validierung:

Erforderliche Felder

Du kannst festlegen, ob die Zeiteingabe erforderlich ist oder nicht. Wenn sie erforderlich ist, musst du sicherstellen, dass der Benutzer eine Zeit eingibt, bevor er das Formular absenden kann.

Zulässige Zeitformate

Lege die zulässigen Zeitformate fest. Dies kann das 12-Stunden-Format (z. B. 11:30 AM) oder das 24-Stunden-Format (z. B. 11:30) umfassen.

Gültige Wertebereiche

Stelle sicher, dass die eingegebene Zeit innerhalb eines gültigen Bereichs liegt. Beispielsweise kannst du die Eingaben auf Zeiten zwischen 00:00 und 23:59 beschränken.

Reguläre Ausdrücke

Du kannst reguläre Ausdrücke verwenden, um die Eingabe zu validieren. Reguläre Ausdrücke sind Muster, die bestimmte Zeichenfolgen oder Formate erkennen können. Hier ist ein Beispiel für einen regulären Ausdruck, der das 24-Stunden-Zeitformat validiert:

/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/

Zeitbibliotheken

Es gibt Zeitbibliotheken wie Moment.js, die die Validierung von Zeiteingaben vereinfachen können. Diese Bibliotheken bieten Funktionen zur Validierung, Formatierung und Manipulation von Zeitwerten.

Benutzerfreundlichkeit

Denke an die Benutzerfreundlichkeit bei der Validierung von Zeiteingaben. Vermeide es, zu strenge Validierungen zu verwenden, die die Benutzer frustrieren könnten. Biete klare Anweisungen und Feedback, um den Benutzern bei der Eingabe korrekter Zeiten zu helfen.

Formatierungsoptionen

Beim Umgang mit Datums- und Zeiteingaben in Webformularen hast du mehrere Formatierungsoptionen zur Verfügung, mit denen du die Benutzeroberfläche an deine spezifischen Anforderungen anpassen kannst.

Schrittweite

Wenn du einen Zeitbereich anzeigst, kannst du die Schrittweite festlegen, in der die Benutzer Zeitwerte auswählen können. Beispielsweise kannst du die Schrittweite auf 15 Minuten festlegen, sodass nur die Zeiten 00:00, 00:15, 00:30 usw. ausgewählt werden können.

<input type="time" step="900">

Mindest- und Höchstwert

Du kannst auch Mindest- und Höchstwerte festlegen, um den Bereich der zulässigen Zeiten einzuschränken. Dies ist hilfreich, wenn du sicherstellen möchtest, dass die Benutzer nur bestimmte Zeitfenster auswählen können.

<input type="time" min="09:00" max="17:00">

Datumsformatierung

Je nach deinen Anforderungen kannst du die Datumsformatierung anpassen. Es stehen mehrere Optionen zur Verfügung, darunter:

  • 24-Stunden-Format: Zeigt die Zeit im 24-Stunden-Format an (z. B. 14:30).
  • 12-Stunden-Format: Zeigt die Zeit im 12-Stunden-Format an (z. B. 02:30 PM).
  • Anzeige der Sekunden: Zeigt die Zeit inklusive Sekunden an (z. B. 14:30:00).
<input type="time" format="24">
<input type="time" format="12">
<input type="time" format="24:00">

Designanpassung

Zusätzlich zu den oben genannten Formatierungsoptionen kannst du das Design des <input type="time">-Elements mit CSS anpassen. Beispielsweise kannst du die Schriftgröße, -farbe und -ausrichtung ändern.

input[type=time] {
  font-size: 1.2rem;
  color: #333;
  text-align: center;
}

Durch die Verwendung dieser Formatierungsoptionen kannst du die Benutzeroberfläche für Zeiteingaben in deinen Webformularen anpassen und die Benutzererfahrung verbessern.

Umwandlung in andere Zeitformate

Manchmal musst du die vom Benutzer eingegebene Zeit möglicherweise in ein anderes Format konvertieren, um sie für bestimmte Zwecke zu verwenden. Hier sind einige gängige Konvertierungen, die du durchführen kannst:

Konvertieren in ein 12-Stunden-Format

Wenn die eingegebene Zeit im 24-Stunden-Format vorliegt, kannst du sie mithilfe von JavaScript-Funktionen oder Bibliotheken in das 12-Stunden-Format konvertieren. Beispielsweise kannst du die Moment.js-Bibliothek verwenden, um dies zu erreichen:

const moment = require('moment');
const time24 = '21:30';
const time12 = moment(time24, 'HH:mm').format('hh:mm A');

Konvertieren in den Unix-Zeitstempel

Der Unix-Zeitstempel ist die Anzahl der Sekunden, die seit dem 1. Januar 1970 um 00:00:00 Uhr UTC vergangen sind. Um die eingegebene Zeit in einen Unix-Zeitstempel zu konvertieren, kannst du folgende Methode verwenden:

const date = new Date('2023-03-08T12:00:00');
const unixTimestamp = date.getTime();

Konvertieren in einen ISO-String

Der ISO-String ist ein standardisiertes Format zur Darstellung von Datum und Uhrzeit. Um die eingegebene Zeit in einen ISO-String zu konvertieren, kannst du die toISOString()-Methode verwenden:

const date = new Date('2023-03-08T12:00:00');
const isoString = date.toISOString();

Zusätzliche Konvertierungen

Abhängig von deinen spezifischen Anforderungen kannst du auch andere Konvertierungen durchführen, wie z. B.:

  • Konvertieren in ein benutzerdefiniertes Format mithilfe von regulären Ausdrücken
  • Konvertieren in ein Stampformat für die Verwendung in Datenbanken
  • Konvertieren in ein Format für die Verwendung in einer API

Tipps zur Verbesserung der Benutzererfahrung

Bei der Verwendung des in Webformularen musst du die Benutzerfreundlichkeit berücksichtigen. Hier sind einige Tipps, die du befolgen kannst, um die Benutzererfahrung zu verbessern:

### Verwendung von Platzhaltertext

Verwende einen Platzhaltertext, um das erwartete Zeitformat anzugeben. Dies hilft Benutzerinnen und Benutzern, das richtige Format einzugeben und vermeidet Verwirrung.

### Aktivierung der automatischen Vervollständigung

Aktiviere die automatische Vervollständigung, damit Benutzerinnen und Benutzer schnell und einfach aus einer Liste gängiger Zeiten auswählen können.

### Bereitstellung von Hilfetext

Verwende Hilfetext, um Erläuterungen oder Anleitungen zur Verwendung des Felds bereitzustellen. Dies hilft Benutzerinnen und Benutzern, wenn sie nicht sicher sind, wie sie die Zeit eingeben sollen.

### Implementierung einer benutzerdefinierten Validierung

Implementiere eine benutzerdefinierte Validierung, um sicherzustellen, dass eingegebene Zeiten gültig sind und deinem gewünschten Format entsprechen. Dies gewährleistet genaue Dateneingaben und vermeidet Fehler.

### Verwendung von Browser-nativen Eingabesystemen

Nutze browser-native Eingabesysteme, die auf mobilen Geräten eine optimierte Benutzeroberfläche für die Zeiteingabe bieten. Dies ermöglicht eine einfache und intuitive Zeitauswahl.

### Vermeidung von unnötigen Einschränkungen

Vermeide unnötige Einschränkungen, wie z. B. das Festlegen eines begrenzten Zeitbereichs oder die Erzwingung eines bestimmten Formats. Dies kann die Benutzeroberfläche einschränken und Frustration hervorrufen.

### Berücksichtigung von Barrierefreiheit

Stelle sicher, dass dein barrierefrei ist. Dies umfasst die Bereitstellung von Beschriftungen, die Verwendung von ARIA-Attributen und die Unterstützung von Bildschirmlesegeräten.

Schreibe einen Kommentar