Formulare in HTML: Ein Anfängerleitfaden
Lernen Sie, wie Sie interaktive HTML-Formulare mit Eingabetypen, Labels, Buttons und grundlegender Validierung erstellen. Meistern Sie Formular-Barrierefreiheit und Best Practices.
Lernen Sie, wie Sie interaktive HTML-Formulare mit Eingabetypen, Labels, Buttons und grundlegender Validierung erstellen. Meistern Sie Formular-Barrierefreiheit und Best Practices.
<form>
-Element?Das <form>
-Element ist ein Container, der alle Formularsteuerelemente umschließt und definiert, wie die Formulardaten verarbeitet werden sollen. Es fungiert als Grundlage für das Sammeln von Benutzereingaben und deren Übermittlung an einen Server.
<form action="/submit" method="POST">
<!-- Formularsteuerelemente kommen hier hin -->
<input type="text" name="username" required>
<button type="submit">Absenden</button>
</form>
action
: Gibt an, wohin Formulardaten beim Absenden gesendet werden sollenmethod
: Definiert, wie Daten gesendet werden (GET oder POST)enctype
: Gibt an, wie Formulardaten kodiert werden sollen (wichtig für Datei-Uploads)<form action="/contact" method="POST" enctype="multipart/form-data">
<!-- Formular für Datei-Uploads -->
</form>
HTML5 führte zahlreiche Eingabetypen ein, die eine bessere Benutzererfahrung und eingebaute Validierung bieten. Lassen Sie uns die am häufigsten verwendeten erkunden:
<!-- Grundlegende Texteingabe -->
<input type="text" name="fullname" placeholder="Geben Sie Ihren vollständigen Namen ein">
<!-- Passwort-Eingabe (verbirgt Zeichen) -->
<input type="password" name="password" placeholder="Passwort eingeben">
<!-- Email-Eingabe (mit eingebauter Validierung) -->
<input type="email" name="email" placeholder="benutzer@beispiel.de">
<!-- Telefonnummer-Eingabe -->
<input type="tel" name="phone" placeholder="+49 (123) 456-7890">
<!-- URL-Eingabe -->
<input type="url" name="website" placeholder="https://beispiel.de">
<!-- Zahleneingabe mit Min/Max-Werten -->
<input type="number" name="age" min="18" max="100" step="1">
<!-- Datumsauswahl -->
<input type="date" name="birthdate">
<!-- Zeitauswahl -->
<input type="time" name="appointment">
<!-- Farbauswahl -->
<input type="color" name="theme-color" value="#ff0000">
<!-- Datei-Upload -->
<input type="file" name="resume" accept=".pdf,.doc,.docx">
<!-- Radiobuttons (Einzelauswahl) -->
<input type="radio" name="gender" value="male" id="male">
<input type="radio" name="gender" value="female" id="female">
<!-- Checkboxen (Mehrfachauswahl) -->
<input type="checkbox" name="interests" value="coding" id="coding">
<input type="checkbox" name="interests" value="design" id="design">
<!-- Bereichsschieberegler -->
<input type="range" name="satisfaction" min="1" max="10" value="5">
Labels sind entscheidend für die Barrierefreiheit von Formularen. Sie bieten Kontext für Screenreader und verbessern die Benutzerfreundlichkeit für alle Benutzer.
<!-- Methode 1: Verwendung des 'for'-Attributs -->
<label for="username">Benutzername:</label>
<input type="text" id="username" name="username" required>
<!-- Methode 2: Eingabe innerhalb des Labels umschließen -->
<label>
E-Mail-Adresse:
<input type="email" name="email" required>
</label>
<form action="/register" method="POST">
<fieldset>
<legend>Persönliche Informationen</legend>
<div class="form-group">
<label for="first-name">Vorname *</label>
<input type="text" id="first-name" name="firstName" required
aria-describedby="first-name-help">
<small id="first-name-help">Geben Sie Ihren rechtlichen Vornamen ein</small>
</div>
<div class="form-group">
<label for="email">E-Mail-Adresse *</label>
<input type="email" id="email" name="email" required
aria-describedby="email-help">
<small id="email-help">Wir werden Ihre E-Mail niemals weitergeben</small>
</div>
<div class="form-group">
<label for="phone">Telefonnummer</label>
<input type="tel" id="phone" name="phone"
aria-describedby="phone-help">
<small id="phone-help">Optional: Ländervorwahl einschließen</small>
</div>
</fieldset>
</form>
HTML5 bietet eingebaute Validierung, die ohne JavaScript funktioniert und die Benutzererfahrung und Datenqualität verbessert.
<input type="text" name="username" required>
<input type="email" name="email" required>
<select name="country" required>
<option value="">Land wählen</option>
<option value="de">Deutschland</option>
<option value="at">Österreich</option>
</select>
<!-- Telefonnummer-Muster -->
<input type="tel" name="phone"
pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}"
placeholder="123-456-7890">
<!-- Benutzerdefiniertes Benutzername-Muster -->
<input type="text" name="username"
pattern="[a-zA-Z0-9_]{3,16}"
title="Benutzername muss 3-16 Zeichen lang sein, nur Buchstaben, Zahlen und Unterstriche">
<!-- Textlängenbegrenzungen -->
<input type="text" name="title" minlength="5" maxlength="100">
<!-- Zahlenbereiche -->
<input type="number" name="quantity" min="1" max="10">
<!-- Datumsbereiche -->
<input type="date" name="start-date" min="2025-01-01" max="2025-12-31">
Hier ist ein umfassendes Kontaktformular, das alle behandelten Konzepte demonstriert:
<form action="/contact" method="POST" novalidate>
<fieldset>
<legend>Kontaktinformationen</legend>
<div class="form-row">
<div class="form-group">
<label for="first-name">Vorname *</label>
<input type="text" id="first-name" name="firstName"
required minlength="2" maxlength="50">
</div>
<div class="form-group">
<label for="last-name">Nachname *</label>
<input type="text" id="last-name" name="lastName"
required minlength="2" maxlength="50">
</div>
</div>
<div class="form-group">
<label for="email">E-Mail-Adresse *</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-group">
<label for="phone">Telefonnummer</label>
<input type="tel" id="phone" name="phone"
pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}"
placeholder="123-456-7890">
</div>
</fieldset>
<fieldset>
<legend>Nachrichtendetails</legend>
<div class="form-group">
<label for="subject">Betreff *</label>
<select id="subject" name="subject" required>
<option value="">Betreff wählen</option>
<option value="general">Allgemeine Anfrage</option>
<option value="support">Technischer Support</option>
<option value="billing">Rechnungsfrage</option>
</select>
</div>
<div class="form-group">
<label for="message">Nachricht *</label>
<textarea id="message" name="message" required
minlength="10" maxlength="1000" rows="5"
placeholder="Bitte beschreiben Sie Ihre Anfrage..."></textarea>
</div>
<div class="form-group">
<label for="priority">Prioritätsstufe</label>
<input type="range" id="priority" name="priority"
min="1" max="5" value="3">
<output for="priority">3</output>
</div>
</fieldset>
<fieldset>
<legend>Präferenzen</legend>
<div class="form-group">
<label>
<input type="checkbox" name="newsletter" value="yes">
Newsletter abonnieren
</label>
</div>
<div class="form-group">
<fieldset>
<legend>Bevorzugte Kontaktmethode</legend>
<label>
<input type="radio" name="contact-method" value="email" checked>
E-Mail
</label>
<label>
<input type="radio" name="contact-method" value="phone">
Telefon
</label>
</fieldset>
</div>
</fieldset>
<div class="form-actions">
<button type="reset">Formular löschen</button>
<button type="submit">Nachricht senden</button>
</div>
</form>
Obwohl sich dieser Leitfaden auf HTML konzentriert, hier sind einige CSS-Tipps für eine bessere Formularpräsentation:
/* Grundlegendes Formular-Styling */
.form-group {
margin-bottom: 1rem;
}
.form-row {
display: flex;
gap: 1rem;
}
label {
display: block;
margin-bottom: 0.25rem;
font-weight: 500;
}
input, select, textarea {
width: 100%;
padding: 0.5rem;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 1rem;
}
input:focus, select:focus, textarea:focus {
outline: none;
border-color: #007bff;
box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
button {
padding: 0.75rem 1.5rem;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
}
button[type="submit"] {
background-color: #007bff;
color: white;
}
HTML-Formulare sind essentiell für die Erstellung interaktiver Web-Erfahrungen. Durch das Verständnis des <form>
-Elements, verschiedener Eingabetypen, ordnungsgemäßer Beschriftung und grundlegender Validierung können Sie Formulare erstellen, die sowohl funktional als auch barrierefrei sind.
Denken Sie an diese Schlüsselprinzipien:
Mit diesen Grundlagen können Sie Formulare erstellen, die hervorragende Benutzererfahrungen bieten und gleichzeitig die Daten sammeln, die Ihre Anwendung benötigt.
Lesen Sie weiter mit diesen verwandten Artikeln
Meistern Sie HTML-Bilder mit diesem umfassenden Leitfaden zu img-Tag, Alt-Text, Dateiformaten, responsiven Bildern, srcset und Web-Performance-Optimierung.
Meistern Sie HTML-Listen mit diesem vollständigen Leitfaden zu ul-, ol- und dl-Elementen, Verschachtelungstechniken, CSS-Styling und Barrierefreiheits-Best-Practices.
Lernen Sie HTML-Tabellen von den Grundlagen bis zu fortgeschrittenen Techniken. Meistern Sie table-, tr-, td-, th-Elemente, Barrierefreiheit, responsives Design und wann Tabellen richtig verwendet werden.
Entdecken Sie die Kraft semantischer HTML-Elemente wie header, footer, article und section. Lernen Sie, wie semantisches Markup SEO, Barrierefreiheit und Code-Wartbarkeit verbessert.