You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何聚焦<tr>内的input时阻止触发<tr>的onclick函数?

解决聚焦输入框时不触发父元素tr的click事件问题

你当前代码的问题在于:聚焦输入框时的点击动作会触发input的click事件,这个事件会冒泡到tr,从而执行tr的click回调——而你在focus事件里调用stopPropagation是无效的,因为focus事件本身不会冒泡,和触发tr的click不是同一个事件。

要实现需求,只需给input添加一个click事件处理函数,阻止该事件向上冒泡即可:

修改后的代码

JavaScript

function focusInputFunction(event){
  console.log("focus");
}

function clickInputHandler(event){
  // 阻止click事件冒泡到父级tr
  event.stopPropagation();
}

function clickTr(){
  console.log("tr");
}

HTML

<table>
  <tr onclick="clickTr()">
    <td>
      <input 
        id="myInput" 
        onfocus="focusInputFunction(event)" 
        onclick="clickInputHandler(event)" 
        type="text"
      >
    </td>
  </tr>
</table>

说明

  • 点击输入框聚焦时,会先触发input的click事件,我们在clickInputHandler里阻止了事件冒泡,tr的clickTr就不会被执行;同时input的focus事件正常触发,输出"focus"。
  • 如果通过键盘(比如Tab键)切换聚焦到输入框,本来就不会触发click事件,tr的click回调自然也不会执行,完全符合需求。

内容的提问来源于stack exchange,提问作者yavgz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:42:14