如果通过鼠标点击输入框外部触发了FocusEvent,或者已经标记出来,我有一些代码具有一些条件分支。这是一个非常混乱的JS-Legacy代码,我只有时间在这里应用修补程序。
Focus for EventEvent:https://developer.mozilla.org/en/docs/Web/API/FocusEvent
与Click事件不同,FocusEvent没有关于事件触发期间按下的按钮的任何信息。
有人知道如何获取这些信息吗?通过谷歌我只找到了解决方法 - 但我不能相信这个FocusEvent有办法接收开箱即用的按钮吗?
答案 0 :(得分:1)
FocusEvent 在您链接的文档中被明确描述为实验技术。所以你可能会在将来添加你的要求。但是现在看起来你别无选择,只能使用解决方法。
我做了一个尝试:
var clickWhileFocused = false;
$("#testInput").on("tabbedOut", function () {
console.log("tabbedOut");
});
$("#testInput").on("clickedOut", function () {
console.log("clickedOut");
});
$(document).on("mousedown", function (e) {
if($("#testInput").is(":focus") && e.target.id != "testInput") {
$("#testInput").trigger("clickedOut");
clickWhileFocused = true;
}
});
$("#testInput").on("focusout", function () {
if(!clickWhileFocused) {
$("#testInput").trigger("tabbedOut");
}
clickWhileFocused = false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text"/>
<input id="testInput" type="text" placeholder="#testInput"/>
<input type="text"/>