Nichts Besonderes hier. Nur die Grundstruktur abdecken.
Wenn Sie die Formulardaten auf natürliche Weise senden (dh ohne JavaScript), müssen Sie das Aktionsattribut angeben, wobei der Wert die URL ist, an die Sie die Formulardaten senden. Die Methode sollte abhängig von dem, was Sie erreichen möchten, erhalten oder veröffentlichen (senden Sie keine sensiblen Daten mit GET).
Zusätzlich gibt es auch das weniger verwendete EngeTePe-Attribut, das den Codierungstyp der gesendeten Daten definiert. Außerdem kann das Zielattribut, obwohl nicht unbedingt ein für Formulare eindeutiges Attribut, verwendet werden, um die Ausgabe in einer neuen Registerkarte anzuzeigen. Eine Beschriftung ist ein Textdeskriptor, der beschreibt, wofür eine Eingabe ist. Es gibt drei Möglichkeiten, ein Etikett zu deklarieren, aber einer von ihnen ist den anderen beiden überlegen. Lassen Sie uns jetzt in diese eintauchen.
benachbarte Bezeichnungen erfordern den meisten Code, da wir explizit erklären müssen, welche Eingabe das Beschriftung beschreibt. Für die meisten ist dies kontraintuitiv, da wir stattdessen Eingänge innerhalb von Beschriftungen einwickeln können, um den gleichen Effekt mit weniger Code zu erzielen.
, dass die angrenzende Methode unter mildernden Umständen erforderlich sein kann. So würde das so aussehen:
: aussehen
<span><span><span><form</span> method<span>="POST"</span> action<span>="/subscribe"</span> enctype<span>="application/x-www-form-urlencoded"</span> target<span>="_blank"</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Leider ist der Nachteil dieses Ansatzes das Fehlen eines visuellen Etiketts. Dies kann jedoch bei einigen Markups in Ordnung sein (z. B. eine einzelne Eingangsform mit einer Überschrift und einem Platzhalter ):
<span><span><span><form</span>></span>
</span> <span><span><span><input</span> type<span>="text"</span>></span><!-- text input -->
</span> <span><span><span><input</span> type<span>="text"</span> value<span>="Prefilled value"</span>></span>
</span><span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
(Ich werde erklären, wofür Platzhalter in einem Moment sind.)
Beschriftungen
Wickeln in Etiketten ist der sauberste Ansatz. Dank CSSs: Focus-Within können wir sogar Etiketten stylen, während ihre Kindereingaben Fokus erhalten, aber wir werden das später diskutieren.
<span><span><span><label</span> for<span>="firstName"</span>></span>First name<span><span></label</span>></span>
</span><span><span><span><input</span> id<span>="firstName"</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Platzhalter gegen Bezeichnungen
Ein kurzer Vergleich:
Beschriftungen geben an, was der Eingang erwartet
Platzhalter zeigen Beispiele für diese Erwartungen
Platzhalter sind nicht als Alternative zu Etiketten ausgelegt, obwohl sie, wie wir im obigen Aria -Beispiel gesehen haben, einen Teil des Kontextes hinzufügen können, der ohne visuelle Etiketten verloren geht.
Idealerweise sollten wir beide verwenden:
Siehe den Stift <span><span><span><input</span> aria-label<span>="First name"</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Form 2 von SitePoint (@sinepoint)
auf Codepen.
Eingabetypen auswählen
Platzhalter gelten nur für textbasierte Eingaben, aber es gibt tatsächlich einen ganzen Bereich verschiedener Eingangstypen, darunter:
semantische Eingangstypen sind während der Formularvalidierung nützlich, insbesondere wenn wir uns auf die native Validierung verlassen, die wir uns in Kürze ansehen werden. Lassen Sie uns zunächst lernen, wie diese Eingaben stylen können. <span><span><span><h1</span>></span>Subscribe<span><span></h1</span>></span>
</span><span><span><span><form</span>></span>
</span> <span><span><span><input</span> aria-label<span>="Email address"</span> placeholder<span>="bruce@wayneenterpris.es"</span>></span>
</span><span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Styling -Eingänge
Der wohl ärgerlichste Aspekt der Codierungsformulare besteht darin, das Standardstyling des Browsers zu überschreiben. Zum Glück heute Aussehen: Keine; hat 96,06% Browser -Unterstützung laut caniuse.com.
Nachdem wir das Standard -Styling des Webbrowsers mit dem folgenden CSS -Code zurückgesetzt haben, können wir dann Eingänge stylen, wie wir möchten, und dies enthält sogar die Funk- und das Kontrollkästchen -Eingabetypen:
<span><span><span><form</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Einige dieser Eingaben können jedoch mit Macken ausgestattet sind, die schwierig oder sogar unmöglich zu überwinden sind (abhängig vom Webbrowser). Aus diesem Grund tendieren viele Entwickler dazu, auf den Standardtyp = "Text" Attribut = Wert zurückzukehren, wenn sie diese Macken unerwünscht finden (z. B. die "Pflege" auf Eingabetyp = "Nummer").
Es gibt jedoch ein Silberstreifen…
Angeben eines inputMode
Mit 82,3% Webbrowser -Unterstützung nach Caniuse.com gibt das neue Eingabemodat -Attribut unabhängig vom verwendeten Eingangstyp an, welches Tastaturlayout auf Handheld -Geräten angezeigt wird.
.
besser als nichts, oder? <span><span><span><form</span> method<span>="POST"</span> action<span>="/subscribe"</span> enctype<span>="application/x-www-form-urlencoded"</span> target<span>="_blank"</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Validierung der Benutzereingabe
Wenn Sie die native HTML-Validierung über eine JavaScript-Lösung wählen, denken Sie daran, dass InputMode in dieser Hinsicht nichts erreicht. inputMode = "E -Mail" validieren Sie keine E -Mail -Adresse, während Eingabe type = "E -Mail" wird. Das ist der Unterschied.
Wenn Sie dies beiseite legen, diskutieren wir, was die Validierung auslöst:
<span><span><span><form</span>></span>
</span> <span><span><span><input</span> type<span>="text"</span>></span><!-- text input -->
</span> <span><span><span><input</span> type<span>="text"</span> value<span>="Prefilled value"</span>></span>
</span><span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Erstellen benutzerdefinierter Regeln
benutzerdefinierte Regeln erfordern Kenntnisse über reguläre Ausdrücke von JavaScript, wie sie vom Regexp -Objekt verwendet werden (ohne Schrägstriche oder Zitate). Hier ist ein Beispiel, das in einer Regel Kleinbuchstaben (A - Z) und Minlenlänge/MaxLength erzwingt:
<span><span><span><label</span> for<span>="firstName"</span>></span>First name<span><span></label</span>></span>
</span><span><span><span><input</span> id<span>="firstName"</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Weitere Informationen hier.
Hinweis: Front-End-Validierung (native HTML oder auf andere Weise) sollte niemals als Ersatz für die serverseitige Validierung verwendet werden!
Styling gültig/ungültige Zustände
Nur für zusätzliche Klarheit, so würden wir die Gültigkeit stylen:
<span><span><span><input</span> aria-label<span>="First name"</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Houston, wir haben ein Problem!
Eingänge versuchen sofort, ihre Werte (oder das Fehlen dessen) sofort zu validieren
<span><span><span><h1</span>></span>Subscribe<span><span></h1</span>></span>
</span><span><span><span><form</span>></span>
</span> <span><span><span><input</span> aria-label<span>="Email address"</span> placeholder<span>="bruce@wayneenterpris.es"</span>></span>
</span><span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Dies zeigt das gültige/ungültig
Siehe den Stift
Form 3 von SitePoint (@sinepoint)
auf Codepen.
Andere grundlegende Dinge
Senden von Formulardaten
Senden von Formulardaten an den Server erfordert normalerweise, dass Eingänge das Namensattribut haben. Dies gilt auch für versteckte Eingänge:
<span><span><span><form</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Akzeptieren von Langformeingang
im Wesentlichen ist dasselbe wie , außer dass Textareas Multiline -Unterstützung haben. Ja, wäre sicherlich intuitiver, aber auch ist die richtige Möglichkeit, Langforminstrumente von Benutzern zu akzeptieren. Außerdem akzeptiert es die meisten (wenn nicht alle) der Attribute, die Eingaben tun.
Gruppieren von Eingängen für eine bessere Zugänglichkeit
Obwohl kürzere Formulare eine viel bessere Benutzererfahrung bieten, sind manchmal längere unvermeidlich. In einem solchen Szenario kann das
-Element verwendet werden, um verwandte Eingänge zu enthalten, wobei eine untergeordnete als Titel/Überschrift für das : verwendet wird
<span><span><span><form</span> method<span>="POST"</span> action<span>="/subscribe"</span> enctype<span>="application/x-www-form-urlencoded"</span> target<span>="_blank"</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
nette Dinge, die Dinge
Behinderung von Eingängen
Hinzufügen des deaktivierten Attributs kann ein Eingang (oder ein beliebiges fokussierbares Element) aufgelegt werden, obwohl dies normalerweise über JavaScript angewendet/nicht angewendet wird. So funktioniert es jedoch:
<span><span><span><form</span>></span>
</span> <span><span><span><input</span> type<span>="text"</span>></span><!-- text input -->
</span> <span><span><span><input</span> type<span>="text"</span> value<span>="Prefilled value"</span>></span>
</span><span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
und das dazugehörige CSS, falls erforderlich:
<span><span><span><label</span> for<span>="firstName"</span>></span>First name<span><span></label</span>></span>
</span><span><span><span><input</span> id<span>="firstName"</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Wenn Sie jedoch nur einen zusätzlichen visuellen Hinweis hinzufügen möchten, dass der Eingang des Benutzers nicht gültig ist, möchten Sie höchstwahrscheinlich das allgemeine Geschwisterkombinator (~) verwenden. Der folgende Code bedeutet grundsätzlich "die Schaltfläche Senden, die jedem Element mit ungültigen Eingaben folgt". Dies ändert keine Funktionalität, aber wenn wir native HTML-Formularvalidierung nutzen (was automatisch die Deaktivierung/Aktivierung von Subjekt-Fähigkeit behandelt), ist dies in Ordnung:
<span><span><span><input</span> aria-label<span>="First name"</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Deaktivieren einer Eingabe, aber trotzdem die Daten senden
Eine Mischung aus und stellt das folgende Beispiel sicher, dass der Wert nicht geändert werden kann. Der Unterschied besteht darin, dass im Gegensatz zu deaktivierten Readonly -Werten als Formulardaten gesendet werden. und im Gegensatz zu versteckten ist Readonly sichtbar:
<span><span><span><h1</span>></span>Subscribe<span><span></h1</span>></span>
</span><span><span><span><form</span>></span>
</span> <span><span><span><input</span> aria-label<span>="Email address"</span> placeholder<span>="bruce@wayneenterpris.es"</span>></span>
</span><span><span><span></form</span>></span>
</span> Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Inkremente verändern
numerisch-basierte Eingänge haben eine „Spin-Taste“, um den numerischen Wert anzupassen, und akzeptieren auch ein Schrittattribut, das einen alternativen inkrementellen Wert jeder Einstellung bestimmt:
<span><span><span><label</span>></span>
</span> First name<span><span><span><input</span>></span>
</span><span><span><span></label</span>></span>
</span> Nach dem Login kopieren
Styling -Formulare, Beschriftungen und Felder auf Focus
Wir können Focus-Infithin verwenden: zum Stil jedes übergeordnete eines Eingangs, der derzeit Fokus erhält. Höchstwahrscheinlich ist dieses Element die