如何解决点击HTML输入字段时不会获得焦点的问题?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (67)

我无法在我的HTML表单上访问我的输入字段和textarea

JS,HTML和CSS非常大,所以我不能在这里发布。

有人可以告诉我在调试时要查找什么吗?

如果将光标移到input字段上,我可以看到文本光标,但是当我点击它时,字段不会获得焦点。我可以通过按键访问该字段Tab,如果我右键单击它,然后单击该字段,我也会获得焦点。他们没有disabledreadonly属性

提问于
用户回答回答于

当我点击它时,字段没有得到重点。我可以通过按“tab键”访问该字段

这听起来像已经取消了mousedown事件的默认操作。通过你的HTML和JS搜索onmousedown处理程序,然后查找一行。

return false;

这条线可能会阻止你通过单击进行聚焦。

我假设你不能编辑添加这个处理程序的代码?如果可以的话,最简单的解决方案就是删除return false;语句。

有没有办法通过不覆盖它来为事件触发器添加功能?

这取决于处理程序是如何连接的。如果使用传统的注册方法(例如element.onmousedown)附加它,则可以为其创建一个包装:

var oldFunc = element.onmousedown;
element.onmousedown = function (evt) {
    oldFunc.call(this, evt || window.event);
}

由于此“wrapper”不会返回false,因此它不会取消该元素的默认操作(聚焦)。如果使用高级注册方法(例如addEventListenerattachEvent)附加事件,则只能使用函数名称/引用删除事件处理程序,并使用类似于上面的包装函数重新附加它。如果它是一个添加的匿名函数,并且无法获得对它的引用,那么唯一的解决方案是使用element.focus()方法手动添加另一个事件处理函数并手动聚焦元素。

用户回答回答于

我也有这个问题。我在包含我的输入字段的父DIV上使用了jQuery UI 的disableSelection()方法。在Chrome中,输入字段不受影响,但在Firefox中,输入(以及textareas也没有)专注于单击。这些输入上的点击事件起作用。

解决方法是删除父DIV 的disableSelection()方法。

扫码关注云+社区

领取腾讯云代金券