我使用jQueryUI模态dialog小部件来模拟"警告"框。这一切都按预期工作,在对话框打开时键盘输入被阻止,除非我用 RETURN 或 ESCAPE 键关闭对话框然后我得到一个迷路& #34; KEYUP"事件击中我的申请。为什么会发生这种情况,当一个模态对话框应该阻止所有输入?
这是一个证明问题的JSfiddle - https://jsfiddle.net/kmbro/x7w6hLtg/ - 这里有一些代码可以让StackOverflow对JSfiddle链接感到高兴: - )
$("<div/>").dialog({ modal: true, ... });
虽然dialog()
似乎是允许 ESCAPE &#34; keyup&#34;的罪魁祸首。要泄漏的事件,我不认为它对 RETURN 负责。这似乎集中在按钮&#34; click&#34;事件由 RETURN 键生成,因为它们触发&#34; keydown&#34;而使用空格键按下按钮会触发&#34;点击&#34; on&#34; keyup&#34;,所以对话框在&#34; keyup&#34;之前关闭了事件发生。你可以通过按 Click Me!按钮来看到它,然后按 RETURN - 对话框打开&#34; keydown&#34;。如果您使用 SPACE 按下按钮,则对话框不会打开,直到&#34; keyup&#34;当你释放钥匙时。
问题是, RETURN 的特别之处在于触发&#34;点击&#34;活动&#34; keydown&#34;而不是&#34; keyup&#34;?
答案 0 :(得分:0)
似乎RETURN键触发“keydown” - “click” - “keyup”只是浏览器的工作方式 - 请参阅https://bugs.jqueryui.com/ticket/15194 - 所以我只需要学习如何使用它。