2009-07-02 20 views
3

Ein Formular auf meiner Website Kontakt -us HTML-Seite hat zwei Felderwas der beste Weg

1) Thema

2) Nachricht

Wenn die Seite einen Standardtext in textbixes und Textbereichen angezeigt werden lädt zum ersten Mal Ich möchte, dass diese beiden Felder Nachrichten wie "Betreff hier eingeben" und "Nachricht hier eingeben" anzeigen.

Ich fand, dass wir dies tun können, indem Sie das Attribut "Wert" des Textfelds verwenden, ist dies der beste Weg? Welche Alternativen habe ich, um dies zu erreichen?

Antwort

9

Oh, ich muss wirklich meinen Artikel zu diesem Thema fertig schreiben. Hier ist die ungeschliffene Version:

Erste — eine Meldung, die beschreibt, was in ein Feld eingeben ist nicht ein Standardwert. Standardwerte sind Dinge, die möglicherweise eingereicht werden können (z. B. ein Land, das basierend auf GeoIP oder eine Lieferadresse aus Kundendatensätzen eingegeben wird).

Zweite — Verwenden Sie den Standardwert als ein gefälschtes Etikett und dann löscht es, wenn der Benutzer es konzentriert (vermutlich möchten Sie nicht, dass der Benutzer die Nachricht manuell löschen muss) verursacht Probleme mit der Zugänglichkeit. Screenreader lesen den fokussierten Inhalt vor, wenn Sie ihn löschen, wenn er fokussiert wird, können die Informationen nicht abgerufen werden.

Die beste Option, meiner Meinung nach, ist ein <label> neben dem Steuerelement zu platzieren. Webseiten sind in der Regel nicht kurz auf Platz — Bildlaufleisten sind nicht böse.

Wenn Sie wollen, dass es wirklich schauen, wie es dann in der Steuerung ist:

  1. Setzen Sie die <label> und <input> in einem <div>
  2. eine Klasse-Set, das auf <div> JavaScript verwenden (so tun Sie nicht habe eine Mist Erfahrung ist JS ist nicht verfügbar)
  3. Wenden Sie CSS, um die <div> zu position: relative und geben Sie ihm eine Größe.
  4. Machen Sie den background des <input>transparent und Stil den div
  5. Position die <label> unter dem <input>
  6. Schreiben Sie eine Funktion zu füllen, wenn der Wert des Eingangs überprüft, eine leere Zeichenfolge ist oder nicht. Schalten Sie je nach Antwort eine Klasse im div ein und aus.
  7. Wenn diese Klasse auf dem div eingestellt ist, stellten text-indent auf eine hohe negative Länge (wie -999em), so dass der Text Bildschirm versteckt ausgeschaltet ist (aber immer noch zu Screen-Reader verfügbar)
+1

+1.Innovative, saubere und zugängliche Lösung! Benötigt ein bisschen mehr Aufwand vom Entwickler obwohl (das ist nicht wirklich eine Kritik, nur eine Beobachtung) – PatrikAkerstrand

+1

Ich habe gerade daran erinnert, gibt es ein Beispiel dafür in Aktion (meine erste Umsetzung dieser denke ich) bei http: // playfire .com/(das große Login-Formular in der Mitte/rechts auf der Seite) – Quentin

+0

Danke Jungs.Ich werde mit David's gehen. Auf diese Weise speichere ich die Notwendigkeit zu validieren inout zu chek, wenn der Benutzer den Vorschlagswert (wie erwähnt von Machine). Danke an alle – Annibigi

2

Ja, das ist der beste Weg. Sie können dann JavaScript verwenden, um die Texteingabe/den Bereich zu leeren, wenn das Element den Fokus erhält. Denken Sie daran, zu überlegen, wie Sie den Fall behandeln möchten, in dem der Benutzer den Standardtext übermittelt. Ist "Benutzername eingeben" ein gültiger Benutzername oder nicht?

Verwandte Themen