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


只要确保标签与输入相关联。

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

方法1:包装标签

将复选框包装在标签标签中:

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

方法二:使用for属性

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

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

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

解释

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

节选自w3.org(此处是我的重点):

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

使用这种方法有一些优点:

不需要为每个复选框分配id(太好了!) 不需要在<label>中使用额外的属性。 输入的可点击区域也是标签的可点击区域,所以没有两个独立的地方可以点击控制复选框-只有一个,无论<input>和实际的标签文本有多远,无论你应用什么类型的CSS。

演示一些CSS:

标签{ 边框:1px实心#ccc; 填充:10 px; 边距:0 0 10px; 显示:块; } 标签:{徘徊 背景:# eee; 光标:指针; } <label><input type="checkbox" />Option 1</label> <label><input type="checkbox" />Option 2</label> <label><input type="checkbox" />Option 3</label> .


<label for="vehicle">Type of Vehicle:</label>
<input type="checkbox" id="vehicle" name="vehicle" value="Bike" />

<label for="myInputID">myLabel</label><input type="checkbox" id="myInputID" name="myInputID />

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

<label for</label>=“myCheckbox”>某些复选框<input type=“checkbox” id=“myCheckbox” />


<label for="my_checkbox">Check me</label>
<input type="checkbox" name="my_checkbox" value="Car" />

这应该对你有帮助: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>

它也很有效:

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

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

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

{后(type =复选框): 内容:attr(价值); 边距:-3px 15px; vertical-align:最高; 空白:nowrap;} 显示:inline-block; } <input type="checkbox" value="My checkbox label value" />

演示:http://codepen。io/mrmoje/pen/oteLl, +它的要点


使用这个

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

在Angular material中用复选框标记

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

标签{ 边框:1px实心#ccc; 填充:10 px; 边距:0 0 10px; 显示:块; } 标签:{徘徊 背景:# eee; 光标:指针; } <label><input type="checkbox" />Option 1</label> <label><input type="checkbox" />Option 2</label> <label><input type="checkbox" />Option 3</label> .