javascript - 表单元素无法获得焦点

标签 javascript jquery html css

我正在从事一个涉及相当大且笨拙的代码库的元素。在 jquery 可拖动小部件中有几个隐藏的 div,当单击某些菜单按钮时会显示这些 div。其中之一包含许多表单元素,包括输入和选择框。

问题是点击这些表单元素中的任何一个都没有任何效果。如果我向 onclick 事件、onmousedown 事件或 onmouseup 事件添加警报,它们就会触发。但是,不会触发 onfocus 事件。我可以通过跳转到一个元素来聚焦它。

我的猜测是某处有一个“preventDefault”或“return false”导致了这个问题,但我已经搜索了将近 10,000 行 JQuery/JS 几次,但没有发现似乎与这个问题有关;代码库太大,除非作为最后的努力,否则无法逐行阅读。我也尝试在此线程中搜索许多建议:HTML input fields does not get focus when clicked .

我不知道接下来要尝试什么。我以前从未见过这样的事情。有没有办法查看给定元素的所有事件列表?我在 Chrome 或 FF 检查器中找不到这个选项。这些浏览器有没有办法让它记录所有触发的事件及其结果?我尝试了以下但只返回了一个 keyup 或 change 事件(取决于我点击的是什么):

 console.log($(this).data('events'))

如何解决此类问题?

最佳答案

有两件事可能会有所帮助。

在 Chrome -> Right Click -> Inspect Element 右侧有一个“Event Listeners”标签显示所有内容在该元素上工作。
(您可能会看到许多其他 chrome 扩展将事件绑定(bind)到所有内容,隐身或禁用所有扩展将在您调试问题时清除它)

另一种捕获事件的方法是:

在 Chrome -> F12 -> Sources 选项卡 -> 然后按右边的暂停按钮 | | 然后从那时起执行的第一个 javascript 将中断相应代码行的执行,以便您可以单步执行。

关于javascript - 表单元素无法获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206889/

相关文章:

javascript - 定时 jQuery 轮换

javascript - 删除 :hover using JavaScript (not using jQuery. .. 不要问)

javascript - 我如何设置一个条件函数来影响一个组件而不是更大的组件

javascript - CSS 过渡会相互覆盖吗?

javascript - 滚动 div 时 react

html - 固定元素的问题

javascript - Meteor JS 模板订阅 : cannot query data with find() even after Template. instance().subscriptionReady()

javascript - 在 Shiny 的应用程序中捕获 iframe 中的点击

javascript - 网页 : How to center right div for all screen sizes

javascript - 将HTML Table中的信息拆分并与 "header"信息合并