Verwendung des HTML-Tags „label“ mit Optionsfeldern
Lesezeit: 11 Minuten
GlenPeterson
Tut das label Tag-Arbeit mit Radiobuttons? Wenn ja, wie verwenden Sie es? Ich habe ein Formular, das so angezeigt wird:
First Name: (text field)
Hair Color: (color drop-down)
Description: (text area)
Salutation: (radio buttons for Mr., Mrs., Miss)
Ich möchte die verwenden label -Tag für jedes Etikett in der linken Spalte, um seine Verbindung zum entsprechenden Steuerelement in der rechten Spalte zu definieren. Aber wenn ich ein Optionsfeld verwende, scheint die Spezifikation darauf hinzudeuten, dass plötzlich die eigentliche “Anrede”-Beschriftung für das Formularsteuerelement nicht mehr in die gehört label Tag, sondern die Optionen “Herr, Frau, etc.” gehe in die label Schild.
Ich war schon immer ein Fan von Zugänglichkeit und dem semantischen Web, aber dieses Design ergibt für mich keinen Sinn. Das label tag deklariert Labels explizit. Das option Tag-Auswahloptionen. Wie erklärt man a label auf dem eigentlichen Etikett für eine Reihe von Optionsfeldern?
Genauso wie bei jedem anderen Formularsteuerelement.
Entweder gibst du ihm ein for Attribut, das mit dem übereinstimmt id des Steuerelements, oder Sie platzieren das Steuerelement innerhalb des Label-Elements.
Ich möchte das Label-Tag für jedes Label in der linken Spalte verwenden
Ein Etikett ist z a Kontrolle, nicht eine Reihe von Kontrollen.
Wenn Sie eine Reihe von Steuerelementen beschriften möchten, verwenden Sie a <fieldset> mit einer <legend> (und gib a <label> zu jedem Steuerelement im Satz).
Fieldset ändert die Anzeige in einigen Browsern, oder? Auch die “Legende” und die Optionsfelder befinden sich in meinem Fall in verschiedenen Tabellenzellen.
– GlenPeterson
7. November 2012 um 16:44 Uhr
Außerdem ist eine Gruppe von Optionsfeldern mit demselben Namensattribut effektiv ein Steuerelement. Jeder <input type="radio" ist ein möglicher Wert für dieses Steuerelement, nicht der Name für das Steuerelement selbst. Ich habe einen Code, der mit jeder anderen Art von Formularsteuerung, die mir begegnet ist, das Richtige macht. Vielleicht ist Fieldset meine Antwort? Letztendlich denke ich, dass der Sinn all dessen die Zugänglichkeit für Menschen mit eingeschränktem Sehvermögen ist. Suchmaschinen haben das „semantische Web“ fast vom ersten Tag an aufgegeben.
– GlenPeterson
7. November 2012 um 17:37 Uhr
@GlenPeterson: “Eine Gruppe von Optionsfeldern mit demselben Namensattribut sind effektiv ein Steuerelement” – nein, ist es nicht. Sie sind zwar miteinander verknüpft, aber jede Schaltfläche ist ein Steuerelement. EIN <select> Tag ist ein Steuerelement. Sie könnten das anstelle von Optionsfeldern verwenden.
– Paul D. Waite
7. November 2012 um 23:16 Uhr
Ich habe Quentins Antwort aktualisiert. Während <label><input>text<label> ist technisch gültig, es ist keine bewährte Methode und ist es seit 03 nicht mehr. Einige AT haben auch Probleme mit dieser Methode. @GlenPeterson, der einer Gruppe von Radios keinen Namen gibt, lässt sie funktionieren und wie eine Radiogruppe von 1 aussehen.
– Ryan B
9. November 2012 um 13:53 Uhr
stackoverflow.com/a/4213253/470749 war eine hilfreiche Erinnerung für mich zum Entfernen for.
– Ryan
3. April 2018 um 19:09 Uhr
Paul D. Waite
Ah ja. So funktioniert das.
<label> Etiketten einzelne Felderalso jeweils <input type="radio"> bekommt sein eigenes <label>.
A beschriften Gruppe von Feldern (z. B. mehrere Optionsfelder, die sich das gleiche teilen name), verwenden Sie a <fieldset> taggen mit a <legend> Element.
+1 für die Beantwortung der spezifischen Frage und für “schwieriger, konsistent über Browser hinweg zu stylen”, obwohl Quentin möglicherweise etwas von Ihrem Donner gestohlen hat. Das Problem bei diesem Ansatz ist, dass er meiner Meinung nach nicht über Tabellenzellen hinweg funktionieren wird, insbesondere wenn die Tabelle andere Formularelemente enthält, die nicht Teil der Optionen für diesen bestimmten Satz von Optionsfeldern sind.
– GlenPeterson
7. November 2012 um 17:51 Uhr
@GlenPeterson: in der Tat. Wenn Sie Ihre Beschriftungen in einer Zelle und Ihre Formularfelder in einer anderen haben möchten, funktioniert der obige HTML-Code nicht. Das ist wohl ein Grund, Tabellen nicht zum Gestalten von Formularen zu verwenden.
– Paul D. Waite
7. November 2012 um 23:13 Uhr
Können Sie einen Link zu einer Methode finden, die Sie empfehlen würden, um Formulare für die Cross-Browser-Kompatibilität auf verschiedenen Bildschirmgrößen zu gestalten? Im Moment haben wir den Feldnamen in der linken Spalte, das Feld in der Mitte und den Hilfetext (falls zutreffend) auf der rechten Seite.
– GlenPeterson
8. November 2012 um 21:27 Uhr
@GlenPeterson: Für eine empfohlene Art und Weise, Formulare anzulegen, fällt mir nichts ein. Es hängt von der Form ab und davon, was Sie erreichen möchten. Eine Sache, die ich persönlich mag, sind Feldbeschriftungen über dem Feld, denn wenn Sie das Feld auf einem iPhone auswählen, können Sie die Beschriftung immer noch sehen, nachdem der Browser das Feld vergrößert hat.
– Paul D. Waite
8. November 2012 um 22:02 Uhr
@AdamFraser: Stimmt, das sollten Sie, obwohl ich glaube, dass einige Screenreader dies in der Vergangenheit nicht sehr gut unterstützt haben. Man würde hoffen, dass sich die Dinge verbessert haben, aber ich habe es in letzter Zeit nicht ausprobiert.
Mir ist jedoch aufgefallen, dass mit dieser Technik das WebAim Wave-Tool eine Warnung vor einem Fehlen ausgibt <fieldset>daher bin ich mir nicht sicher, wie die AT-Unterstützung dafür ist.
Cesar Castro
Sie können eine Beschriftung nicht für eine Reihe von Schaltflächen deklarieren, sondern für jede Schaltfläche. In diesem Fall lauten die Labels “Mr.”, “Mrs.” und “Fräulein”, nicht “Anrede”.
AKTUALISIEREN
Vielleicht solltest du einfach ein anderes Tag für dieses deine “Label” verwenden – da es nicht wirklich ein Label ist.
<tr>
<th align="right" scope="row"><span class="label">Activity:</span></th>
<td> </td>
<td align="left"><label><input type="radio" name="es" value="" id="es0" /> Active  </label>
[... and so on]
</tr>
BananeSäure
meine 2 Cent zum Thema, oder besser gesagt ein Nebenknoten (es verwendet keine implizite Assoziation, um irgendwo platziert werden zu können, sondern Verlinkung): Gruppierung erfolgt durch die name Attribut und verlinken bis zum id Attribut:
Jemand hat dies ohne ersichtlichen Grund abgelehnt. Dumm.
– Bananensäure
17. Oktober 2017 um 18:32 Uhr
Dies ist der Ansatz, den ich in der Vergangenheit gewählt habe; ob es als bewährte Methode gilt, idk, aber es stimmt mit der Gruppierung von Optionsfeldern überein, so dass es mir sehr natürlich erscheint. Leider ist bei den Defs for Label das Attribut for des Labels mit einer ID und nicht mit einem Namen verknüpft. Dieser Ansatz generiert also Warnungen.
– Jacob Lee
21. April 2020 um 16:21 Uhr
Um Ihre Frage zu beantworten: Nein, Sie können Anrede nicht mit einem der Optionsfelder verbinden. Es würde keinen Sinn machen, wenn Sie auf Anrede klicken würden, wäre eine der Optionen ausgewählt. Stattdessen können Sie Herrn, Frau und Fräulein ihre eigenen Bezeichnungen geben. Wenn also jemand auf eines dieser Wörter klickt, wird das entsprechende Optionsfeld ausgewählt.
Ich denke, dass Sie Anrede immer noch in a einpacken könnten <label> Element, Sie können das einfach nicht verwenden for Attribut. Ich stehe korrigiert, siehe die Kommentare unten. Obwohl es technisch möglich ist, ist es nicht was <label> war dafür gedacht.
Jemand hat dies ohne ersichtlichen Grund abgelehnt. Dumm.
– Bananensäure
17. Oktober 2017 um 18:32 Uhr
Dies ist der Ansatz, den ich in der Vergangenheit gewählt habe; ob es als bewährte Methode gilt, idk, aber es stimmt mit der Gruppierung von Optionsfeldern überein, so dass es mir sehr natürlich erscheint. Leider ist bei den Defs for Label das Attribut for des Labels mit einer ID und nicht mit einem Namen verknüpft. Dieser Ansatz generiert also Warnungen.
– Jacob Lee
21. April 2020 um 16:21 Uhr
George
Das „for“-Attribut des Labels entspricht der Radiobutton-ID. So…
Sie können das Radio-Element auch in ein Label einschließen, wenn Sie keine ID verwenden möchten.
– Jörgen
7. November 2012 um 16:25 Uhr
Ich glaube nicht, dass Sie die eigentliche Frage des OP ganz beantworten. Wenn ich das richtig verstehe, fragt er, wie man ein Label auszeichnet, das für einen ganzen Satz von Optionsfeldern gilt.
– Paul D. Waite
7. November 2012 um 16:33 Uhr
@PaulD.Waite Ich habe es noch einmal gelesen, du scheinst Recht zu haben, lol. Mein Fehler.
– George
7. November 2012 um 19:10 Uhr
12565900cookie-checkVerwendung des HTML-Tags „label“ mit Optionsfeldernyes
Zugehörige Antwort: stackoverflow.com/questions/13080416/…
– Ryan B
9. November 2012 um 13:56 Uhr