【发布时间】:2014-07-24 19:26:43
【问题描述】:
我正在使用 jquery-ui modal,我的应用程序使用了几个绑定到 modal-dialogs 的热键。
这是我的工作jsfiddle example 和代码:
$(document).keypress(function(e){console.log("pressed a key: " + e.which);})
var dialog = $('#modal-dialog')
.dialog({ modal: true, autoOpen: false, buttons: [{text:"ok"}] });
.keypress(function(e){console.log("cought!"); e.stopPropagation()})
$("#bt").click(function(){dialog.dialog("open")})
当一个模态对话框打开时,它应该禁止按键事件沿着 Dom-tree 传播到文档/窗口。 当输入元素具有焦点(不适用于按钮)时,stopPropagation 启动。 否则会传播事件。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
我注意到 keydown、keyup 和 keypress 事件通常被模态对话框阻止,但如果 RETURN 或 ESCAPE 导致对话框关闭,那么 KEYUP 事件会在 DOM 中触发,因为对话框在 KEYDOWN 事件时关闭。
标签: jquery jquery-ui event-handling modal-dialog jquery-ui-dialog