html – 当标签只有一个按钮时,单击按钮不会(完全?)触发标签

前端之家收集整理的这篇文章主要介绍了html – 当标签只有一个按钮时,单击按钮不会(完全?)触发标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个类型无线电输入.对于每个输入,都有一个带有单个按钮的对应标签.

我希望单击按钮与单击标签具有相同的效果:将检查相应的输入.

但是,这不会发生.如下面的代码片段所示,悬停并按下按钮会触发单选按钮中相应的样式更改,但即使简单标签按预期工作,单击操作也不会选择输入.

我已经检查过按钮是标签的合法子女. Labels允许短语内容,按钮是Phrasing Content,所以一切都应该没问题.

我还尝试向两个按钮的click事件添加一个事件监听器,并在其中调用event.preventDefault(),只是为了确保按钮的默认行为不会阻止事件冒泡到标签,但是没有用,标签正在接收活动.

因为这似乎在浏览器中是一致的(在Firefox 41a和Opera 31b / Chrome 44上测试):

>我在这里发生了什么,我失踪了?
>如何在没有欺骗的情况下实现这一点(例如将标签样式化为按钮)?

<div>
  <input type="radio" name="A" id="one" />
  <label for="one">One</label>
  <label for="one">
    <button type="button">One</button>
  </label>

  <input type="radio" name="A" id="two" />
  <label for="two">Two</label>
  <label for="two">
    <button type="button">Two</button>
  </label>
</div>

解决方法

>标签一次只能与一个表单控件关联.这可以通过for属性指向具有匹配ID属性的元素来证明.

你有一个按钮,它是你的标签的后代;对此的预期解释是标签用作按钮的标签.但是,您尝试将单选按钮(而不是按钮元素)与标签相关联.这里真正的问题是表单控件和标签之间存在冲突;它无法确定它应该与哪个控件相关联.

我猜测单选按钮不能正常工作这一事实的副作用.也许这取决于单选按钮和按钮元素中的某些激活行为.

I’ve checked that buttons are legal children of labels. Labels allow Phrasing Content,and buttons are Phrasing Content,so everything should be okay there.

验证器确实会对您的标记产生以下错误

Error: Any button descendant of a label element with a for attribute must have an ID value that matches that for attribute.

这是因为具有for属性的label元素需要具有表单控件,该表单控件具有指向for属性的ID值,即使该控件是标签本身的后代也是如此.但是您不能将相同的ID分配给多个元素.结果是上述冲突.>如果你不想知道你想要在这里完成什么,如果你只是希望标签具有按钮的外观,那么我给出的最佳建议就是如此设计它.

原文链接:https://www.f2er.com/html/231527.html

猜你在找的HTML相关文章