当前位置: 首页 > 知识库问答 >
问题:

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

贾越
2023-03-14

我有两个inputs类型的radio。对于每个输入都有一个相应的标签,里面有一个按钮

我希望单击按钮会产生与单击标签相同的效果:检查相应的输入。

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

我已经检查了按钮s是标签s的合法子代。标签允许短语化内容,按钮是短语化内容,所以那里应该一切正常。

我还尝试将事件侦听器添加到两个按钮的单击事件中,并在其中调用event.preventDefault(),以确保按钮的默认行为不会阻止事件冒泡到标签,但无济于事,标签正在接收事件。

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

  1. 我错过了这里发生的什么事
  2. 如何在不耍花招的情况下实现这一点(例如,将标签样式设置为按钮)
<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>

共有1个答案

缑兴贤
2023-03-14

>

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

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

    我猜单选按钮不能正常工作这是一个副作用。可能是由于单选按钮和按钮元素中的某些激活行为。

    我已经检查了按钮s是标签s的合法子代。标签允许短语化内容,按钮是短语化内容,所以那里应该一切正常。

    验证器仍然会对您的标记产生以下错误:

    错误:具有for属性的标签元素的任何按钮后代必须具有与for属性匹配的ID值。

    这是因为具有for属性的标签元素需要有一个表单控件,该控件的ID值为要指向的for属性,即使该控件是标签 本身。但是不能将相同的ID分配给多个元素。结果就是前面提到的冲突。

    如果你不知道你想在这里完成什么,如果你只是想让标签有按钮的外观,我能给你的最好建议就是这样设计它。

  •  类似资料:
    • 问题内容: 我正在创建一个需要一些简单输入的gui应用程序,但是,当我单击JFrame中的按钮时,我正在使用的actionPerformed方法没有被触发/触发(什么也没有发生)。我似乎无法弄清楚我错过了什么(如果有帮助,这是Java的新手)。感谢您的帮助/建议。 这是所有代码: 问题答案: 您需要像这样向按钮组件添加一个动作监听器。

    • 我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检

    • 因此,我在我的Shopify商店中有一个“添加到购物车”按钮,我希望在被点击后,谷歌标签管理器中有一个标签以5秒的延迟触发。 按钮类是: 这是按钮: 我尝试了以下方法: 单击类包含/等于/匹配css选择器等,但没有任何效果。设置此标记格式的正确方法是什么,以便每次单击按钮时它都会触发?

    • 所以我有一个JavaFX应用程序,它包含一个按钮,应该可以打开DirectoryChooser onclick。当我触发它一次时,它会做它应该做的,非常好。我一关闭DirectoryChooser对话框,按钮就什么都不做了。我在网上搜索一些“事件重置”或类似的内容,因为我认为该事件可能仍处于“活动”状态,因此不再触发,但没有任何结果: 不知道这是完全错误的方法,还是我错过了一些重要的东西。我希望你

    • 我找到了其他相关的问题,但没有一个答案实际上解决了我的问题。这个按钮在IE上很好用,但在Chrome上不行。我尝试移除span元素,将按钮放在任何其他标记之外,但仍然触发了两次。这个temple扩展了一个'base.html'文件,代码位于'main'元素中。 HTML: jQuery:

    • 如果我按下呼叫按钮,我会得到一个错误,即出租车没有呼叫,而是转到另一个窗口。 我认为这个错误来自实时数据库。如果你有不同的意见,写下你的答案。 错误:E/AndroidRuntime:致命异常:主进程:com。实例乌兹别克斯坦,PID:8915爪哇。lang.NullPointerException:尝试调用虚拟方法“double android”。地方地方getLatitude()'位于com上