是否可以在不使用“ for = id”的情况下将标签与复选框相关联?


70

我知道有时将标签与复选框相关联是一件好事:

<input id="something" type="checkbox" value="somevalue" />
<label for="something">this is label text</label>

..但是我必须使用一个ID来关联它吗?
我什至关心的主要原因是因为我喜欢能够单击标签来切换复选框的值,但不喜欢将id用作如此简单的东西的想法。

我想我可以使用jQuery切换单击标签的前一个元素(复选框),但也许我缺少一些更简单的东西。https://stackoverflow.com/a/2720771/923817看起来像一个解决方案,但是用户说它在IE中不起作用。

Answers:


177

是的,将输入内容放置在标签内。

<label><input type=checkbox name=chkbx1> Label here</label>

请参见HTML规范中的隐式标签关联


3
+1最佳解决方案-有关隐式标签关联,请参见HTML规范。
SliverNinja-MSFT 2011年

3
在IE中有效吗?stackoverflow.com/a/2720771/923817建议不
要这样做

3
限制(根据规格):请注意,当使用表进行布局时,表位于一个单元格中,而其关联的控件位于另一个单元格中,则不能使用此技术。
SliverNinja-MSFT 2011年

IE开始在IE 7支持这个
尤卡K. Korpela

1
有用!我打开IE9,并使用F12开发人员工具测试IE 7/8/9浏览器和文档模式。工作正常。太好啦!没有更多的ID关联对我来说。谢谢大家
D.Tate 2011年

4

演示:JsFiddle

.c-custom-checkbox {
  padding-left: 20px;
  position: relative;
  cursor: pointer;
}
.c-custom-checkbox input[type=checkbox] {
  position: absolute;
  opacity: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  height: 15px;
  width: 15px;
  padding: 0;
  border: 0;
  left: 0;
}
.c-custom-checkbox .c-custom-checkbox__img {
  display: inline;
  position: absolute;
  left: 0;
  width: 15px;
  height: 15px;
  background-image: none;
  background-color: #fff;
  color: #000;
  border: 1px solid #333;
  border-radius: 3px;
  cursor: pointer;
}
.c-custom-checkbox input[type=checkbox]:checked + .c-custom-checkbox__img {
  background-position: 0 0;
  background-color: tomato;
}
<label class="c-custom-checkbox">
  <input type="checkbox" id="valueCheck" />
  <i class="c-custom-checkbox__img"></i>Some Label
</label>


0
<label for="something">this is label text</label>
<input id="something" type="checkbox" value="somevalue" />

实际上,for属性用于残疾人士的屏幕阅读器,因此对于不带for属性的可访问性写没有用


除非标签写得不好,否则使用标签内包含的输入不会使屏幕阅读器混乱。这是一个非常简单的解析案例。
Joao Carlos

@JoaoCarlos,来自w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211/H44.html#ua2.18.1:“ HTML和XHTML规范同时允许隐式和显式标签。但是,某些辅助技术无法正确处理隐式标签标签(例如,<label>名字<input type =“ text” name =“ firstname”> </ label>)。”
史蒂夫·哈里森

但是不确定现代浏览器和屏幕阅读器是否仍然存在此问题。
史蒂夫·哈里森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.