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

IT技术 javascript jquery html css checkbox
2021-03-11 22:44:54

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

<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 中不起作用。

3个回答

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

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

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

有用!我打开IE9,使用F12 Developer Tools 测试IE 7/8/9 浏览器和文档模式。工作得很好。太好啦!对我来说没有更多的 id 关联。感谢大家
2021-04-20 22:44:54
IE 在 IE 7 中开始支持这一点。
2021-04-21 22:44:54
这在 IE 中有效吗?stackoverflow.com/a/2720771/923817表明它没有
2021-04-24 22:44:54
限制(根据规范):请注意,当表格用于布局时,不能使用此技术,标签在一个单元格中,其关联控件在另一个单元格中。
2021-05-02 22:44:54
+1 最佳解决方案 - 有关隐式标签关联,请参阅 HTML 规范
2021-05-16 22:44:54

演示: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>

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

实际上 for 属性是用于屏幕阅读器的残疾人,所以没有 for 属性对于可访问性写入没有用

使用包含在标签中的输入不会弄乱屏幕阅读器,除非它们写得不好。它是一个非常简单的解析案例。
2021-04-22 22:44:54
不确定这是否仍然是现代浏览器 + 屏幕阅读器的问题。
2021-04-24 22:44:54
您应该如何处理列表中的标记元素。在阵营出现这种情况的时候,使用索引或IDS中htmlForid是笨重的,令人难以置信的尴尬。
2021-04-25 22:44:54
@JoaoCarlos 来自w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211/H44.html#ua2.18.1:“HTML 和 XHTML 规范允许隐式和显式标签。但是,一些辅助技术不能正确处理隐式标签标签(例如,<label>名字<input type="text" name="firstname"></label>)。”
2021-05-06 22:44:54