Wie kann ich ein HTML-Kontrollkästchen mit einer Beschriftung erstellen, auf die geklickt werden kann (dies bedeutet, dass durch Klicken auf die Beschriftung das Kontrollkästchen aktiviert / deaktiviert wird)?
Wie kann ich ein HTML-Kontrollkästchen mit einer Beschriftung erstellen, auf die geklickt werden kann (dies bedeutet, dass durch Klicken auf die Beschriftung das Kontrollkästchen aktiviert / deaktiviert wird)?
Antworten:
Schließen Sie das Kontrollkästchen in ein label
Tag ein:
<label><input type="checkbox" name="checkbox" value="value">Text</label>
for
AttributVerwenden Sie das for
Attribut (stimmen Sie mit dem Kontrollkästchen überein id
):
<input type="checkbox" name="checkbox" id="checkbox_id" value="value">
<label for="checkbox_id">Text</label>
HINWEIS : Die ID muss auf der Seite eindeutig sein!
Da die anderen Antworten dies nicht erwähnen, kann eine Beschriftung bis zu 1 Eingabe enthalten und das for
Attribut weglassen , und es wird angenommen, dass es sich um die darin enthaltene Eingabe handelt.
Auszug aus w3.org (mit meinem Schwerpunkt):
[Das for-Attribut] ordnet die zu definierende Bezeichnung explizit einem anderen Steuerelement zu. Wenn vorhanden, muss der Wert dieses Attributs mit dem Wert des ID-Attributs eines anderen Steuerelements im selben Dokument übereinstimmen. Wenn nicht vorhanden, wird die zu definierende Bezeichnung dem Inhalt des Elements zugeordnet.
Um eine Beschriftung implizit einem anderen Steuerelement zuzuordnen, muss sich das Steuerelement im Inhalt des LABEL-Elements befinden . In diesem Fall darf das LABEL nur ein Steuerelement enthalten . Das Etikett selbst kann vor oder nach der zugehörigen Steuerung positioniert werden.
Die Verwendung dieser Methode hat einige Vorteile gegenüber for
:
Sie müssen nicht id
jedem Kontrollkästchen ein zuweisen (großartig!).
Das zusätzliche Attribut in der muss nicht verwendet werden <label>
.
Der anklickbare Bereich der Eingabe ist auch der anklickbare Bereich des Etiketts. Es gibt also keine zwei separaten Klickstellen, die das Kontrollkästchen steuern können - nur eine, unabhängig davon, wie weit der <input>
und der tatsächliche Etikettentext voneinander entfernt sind und welche Art von CSS Sie verwenden bewerben Sie sich darauf.
Demo mit etwas CSS:
label {
border:1px solid #ccc;
padding:10px;
margin:0 0 10px;
display:block;
}
label:hover {
background:#eee;
cursor:pointer;
}
<label><input type="checkbox" />Option 1</label>
<label><input type="checkbox" />Option 2</label>
<label><input type="checkbox" />Option 3</label>
Stellen Sie einfach sicher, dass die Beschriftung der Eingabe zugeordnet ist.
<fieldset>
<legend>What metasyntactic variables do you like?</legend>
<input type="checkbox" name="foo" value="bar" id="foo_bar">
<label for="foo_bar">Bar</label>
<input type="checkbox" name="foo" value="baz" id="foo_baz">
<label for="foo_baz">Baz</label>
</fieldset>
<input type="checkbox" name="foo[]" value="bar" ...>
. Dadurch erhalten Sie ein Array, das die Werte aller aktivierten Kontrollkästchen (die diesen Namen haben) enthält. Zum Beispiel $_POST['foo'][0]
könnte bar
und $_POST['foo'][1]
könnte sein baz
(wenn beide aktiviert sind).
Sie können auch CSS-Pseudoelemente verwenden, um Ihre Beschriftungen aus allen Wertattributen Ihres Kontrollkästchens auszuwählen und anzuzeigen.
Bearbeiten: Dies funktioniert nur mit Webkit- und Blink-basierten Browsern (Chrome (ium), Safari, Opera ...) und damit den meisten mobilen Browsern. Keine Firefox- oder IE-Unterstützung hier.
Dies kann nur nützlich sein, wenn Sie Webkit / Blink in Ihre Apps einbetten.
<input type="checkbox" value="My checkbox label value" />
<style>
[type=checkbox]:after {
content: attr(value);
margin: -3px 15px;
vertical-align: top;
white-space:nowrap;
display: inline-block;
}
</style>
Alle Pseudoelementbeschriftungen können angeklickt werden.
Demo: http://codepen.io/mrmoje/pen/oteLl , + Das Wesentliche davon
<label for="myInputID">myLabel</label><input type="checkbox" id="myInputID" name="myInputID />
name
den Wert des Attributs in einen anderen Wert als den in den Attributen for
und vorhandenen ändern id
, da diese beiden verwandt sind, während dies name
nicht der Fall ist (ich glaube jedoch , dass es immer noch obligatorisch ist, aufgenommen zu werden). .
Es funktioniert auch:
<form>
<label for="male"><input type="checkbox" name="male" id="male" />Male</label><br />
<label for="female"><input type="checkbox" name="female" id="female" />Female</label>
</form>
for
und id
in Ihrem Beispiel weglassen , da das label
Tag nur ein Eingabeelement enthält.
Dies sollte Ihnen helfen: W3Schools - Labels
<form>
<label for="male">Male</label>
<input type="radio" name="sex" id="male" />
<br />
<label for="female">Female</label>
<input type="radio" name="sex" id="female" />
</form>
<label for="my_checkbox">Check me</label>
<input type="checkbox" name="my_checkbox" value="Car" />
Verwenden Sie das label
Element und das for
Attribut, um es dem Kontrollkästchen zuzuordnen:
<label for="myCheckbox">Some checkbox</label> <input type="checkbox" id="myCheckbox" />
In Winkelmaterialetikett mit Kontrollkästchen
<mat-checkbox>Check me!</mat-checkbox>
Benutze das
<input type="checkbox" name="checkbox" id="checkbox_id" value="value">
<label for="checkbox_id" id="checkbox_lbl">Text</label>
$("#checkbox_lbl").click(function(){
if($("#checkbox_id").is(':checked'))
$("#checkbox_id").removAttr('checked');
else
$("#checkbox_id").attr('checked');
});
});