我有一个问题,我无法弄清楚到底是什么导致了这种行为。我无法访问我的 HTML 表单上的输入字段和 textarea
。
不幸的是,JS、HTML 和 CSS 非常大,所以我不能在这里全部发布。
任何人都可以告诉我在调试这种奇怪的行为时要寻找什么吗?
更新
如果我将光标移到 input
字段上,我可以看到文本光标,但是当我单击它时,该字段不会获得焦点。我可以通过按 Tab 键访问该字段,如果我右键单击它然后单击该字段,我也会获得它的焦点。
...不,它们没有 disabled
或 readonly
属性 ;-)
最佳答案
when i click it the field does not get the focus. i can access the field via pressing the "tab-key"
听起来您已经取消了 mousedown 事件的默认操作。在您的 HTML 和 JS 中搜索 onmousedown 处理程序并查找一行内容。
return false;
这条线可能会阻止你通过点击来聚焦。
回复:您的评论,我假设您无法编辑添加此处理程序的代码?如果可以,最简单的解决方案就是删除 return false;
语句。
is there a way to just add functionality to the event-trigger by not overwriting it?
这取决于处理程序的附加方式。如果它是使用传统注册方法附加的,例如element.onmousedown,然后你可以为它创建一个包装器:
var oldFunc = element.onmousedown;
element.onmousedown = function (evt) {
oldFunc.call(this, evt || window.event);
}
因为这个“包装器”不返回false,所以它不会取消元素的默认操作(聚焦)。如果您的事件是使用高级注册方法附加的,例如 addEventListener 或 attachEvent,那么您只能使用函数名称/引用删除事件处理程序,然后使用包装的重新附加它功能和上面类似。如果它是添加的匿名函数并且您无法获得对它的引用,那么唯一的解决方案是附加另一个事件处理程序并使用 element.focus() 方法手动聚焦元素。
关于javascript - 单击时 HTML 输入字段未获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3724749/