【问题标题】:Form elements cannot be focused表单元素无法聚焦
【发布时间】:2013-11-26 01:24:51
【问题描述】:

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

问题在于,单击任何这些表单元素绝对不会执行任何操作。如果我向 onclick 事件、onmousedown 事件或 onmouseup 事件添加警报,它们会触发。但是,onfocus 事件不会触发。我可以通过 Tab 键来聚焦一个元素。

我的猜测是某处存在“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'))

如何解决此类问题?

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

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

    在 Chrome 中 -> 右键单击 -> 检查元素 右侧有一个 “事件监听器” 选项卡,显示所有内容处理那个元素。
    (您可能会看到许多其他 chrome 扩展程序将事件绑定到所有内容,隐身或禁用所有扩展程序会在您调试问题时清除此问题)

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

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

    【讨论】:

    • 谢谢大卫;你是救生员。根据此事件,我能够将其追溯到 JQuery 取消事件:bugs.jqueryui.com/ticket/5466。我通过调整对话框的 z-indexes 解决了这个问题,因为修改 jQuery src 不是一个选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多