如何创建带有可点击标签的复选框?

发布于 2024-11-15 04:46:39 字数 48 浏览 1 评论 0原文

如何创建带有可单击标签的 HTML 复选框(这意味着单击标签可打开/关闭复选框)?

How can I create an HTML checkbox with a label that is clickable (this means that clicking on the label turns the checkbox on/off)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

短叹 2024-11-22 04:46:39

方法 1:包裹标签标签

将复选框包裹在 label 标签内:

    <label>
       <input type="checkbox" name="checkbox" value="value">
       Text
    </label>

方法 2:使用 for 属性

使用 for 属性(与复选框匹配) id):

<input type="checkbox" name="checkbox" id="checkbox_id" value="value">
<label for="checkbox_id">Text</label>

注意:ID在页面上必须是唯一的!

说明

由于其他答案没有提及,因此标签最多可以包含 1 个输入并省略 for 属性,并且将假定它用于其中的输入。

摘自 w3.org (我强调):

[for 属性] 显式地将正在定义的标签与另一个控件相关联。如果存在,该属性的值必须与同一文档中其他控件的 id 属性的值相同。 如果不存在,则定义的标签与元素的内容相关联。

要将标签与另一个控件隐式关联,该控件元素必须位于 LABEL 元素的内容内。在这种情况下,LABEL 只能包含一个控制元素。标签本身可以位于关联控件之前或之后。

for 相比,使用此方法有一些优点:

  • 无需为每个复选框分配 id(太棒了!)。

  • 无需在中使用额外的属性。

  • 输入的可点击区域也是标签的可点击区域,因此没有两个单独的点击位置可以控制复选框 - 只有一个位置,无论 相距多远和实际的标签文本,无论您应用哪种 CSS。

带有一些 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>

Method 1: Wrap Label Tag

Wrap the checkbox within a label tag:

    <label>
       <input type="checkbox" name="checkbox" value="value">
       Text
    </label>

Method 2: Use the for Attribute

Use the for attribute (match the checkbox id):

<input type="checkbox" name="checkbox" id="checkbox_id" value="value">
<label for="checkbox_id">Text</label>

NOTE: ID must be unique on the page!

Explanation

Since the other answers don't mention it, a label can include up to 1 input and omit the for attribute, and it will be assumed that it is for the input within it.

Excerpt from w3.org (with my emphasis):

[The for attribute] explicitly associates the label being defined with another control. When present, the value of this attribute must be the same as the value of the id attribute of some other control in the same document. When absent, the label being defined is associated with the element's contents.

To associate a label with another control implicitly, the control element must be within the contents of the LABEL element. In this case, the LABEL may only contain one control element. The label itself may be positioned before or after the associated control.

Using this method has some advantages over for:

  • No need to assign an id to every checkbox (great!).

  • No need to use the extra attribute in the <label>.

  • The input's clickable area is also the label's clickable area, so there aren't two separate places to click that can control the checkbox - only one, no matter how far apart the <input> and actual label text are, and no matter what kind of CSS you apply to it.

Demo with some 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>

毁我热情 2024-11-22 04:46:39

只需确保标签与输入关联即可。

<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>

Just make sure the label is associated with the input.

<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>
↙厌世 2024-11-22 04:46:39

您还可以使用 CSS 伪元素(分别)从所有复选框的值属性中选取和显示标签。
编辑:这仅适用于基于 webkit 和 Blink 的浏览器(Chrome(ium)、Safari、Opera...)以及大多数移动浏览器。此处不支持 Firefox 或 IE。
这可能仅在将 webkit/blink 嵌入到您的应用程序中时才有用。

所有伪元素标签都是可点击的。

[type=checkbox]:after {
  content: attr(value);
  margin: -3px 15px;
  vertical-align: top;
  white-space: nowrap;
  display: inline-block;
}
<input type="checkbox" value="My checkbox label value" />

演示:http://codepen.io/mrmoje/pen/oteLl, + 要点

You could also use CSS pseudo elements to pick and display your labels from all your checkbox's value attributes (respectively).
Edit: This will only work with webkit and blink based browsers (Chrome(ium), Safari, Opera....) and thus most mobile browsers. No Firefox or IE support here.
This may only be useful when embedding webkit/blink onto your apps.

All pseudo element labels will be clickable.

[type=checkbox]:after {
  content: attr(value);
  margin: -3px 15px;
  vertical-align: top;
  white-space: nowrap;
  display: inline-block;
}
<input type="checkbox" value="My checkbox label value" />

Demo:http://codepen.io/mrmoje/pen/oteLl, + The gist of it

滴情不沾 2024-11-22 04:46:39
<label for="vehicle">Type of Vehicle:</label>
<input type="checkbox" id="vehicle" name="vehicle" value="Bike" />
<label for="vehicle">Type of Vehicle:</label>
<input type="checkbox" id="vehicle" name="vehicle" value="Bike" />
新人笑 2024-11-22 04:46:39
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>

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>

左秋 2024-11-22 04:46:39
<label for="myInputID">myLabel</label><input type="checkbox" id="myInputID" name="myInputID />
<label for="myInputID">myLabel</label><input type="checkbox" id="myInputID" name="myInputID />
黄昏下泛黄的笔记 2024-11-22 04:46:39

这应该对您有帮助:W3Schools - 标签

<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>

This should help you: 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>
故事未完 2024-11-22 04:46:39

它也有效:

<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>

It works too :

<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>
掩饰不了的爱 2024-11-22 04:46:39
<label for="my_checkbox">Check me</label>
<input type="checkbox" name="my_checkbox" value="Car" />
<label for="my_checkbox">Check me</label>
<input type="checkbox" name="my_checkbox" value="Car" />
迷迭香的记忆 2024-11-22 04:46:39

使用 label 元素和 for 属性将其与复选框关联:

;

Use the label element, and the for attribute to associate it with the checkbox:

<label for="myCheckbox">Some checkbox</label> <input type="checkbox" id="myCheckbox" />

吝吻 2024-11-22 04:46:39

在带有复选框的 Angular 材质标签中

<mat-checkbox>Check me!</mat-checkbox>

In Angular material label with checkbox

<mat-checkbox>Check me!</mat-checkbox>
黑白记忆 2024-11-22 04:46:39

用这个

<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');
    });
});

Use this

<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');
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文