lou*_*luo 13 jquery jquery-ui jquery-ui-dialog
我有一个模态jQuery对话框和另一个在对话框后面接受ESC键事件的元素.当jQuery对话框启动时,我不希望传播这个ESC键事件.现在发生的是当我点击ESC时,它将关闭对话框并触发背景元素上的ESC事件处理程序.
当jQuery对话框被解除时,如何吃ESC键事件?
TJ *_*oll 22
内部jQuery UI的对话框closeOnEscape
选项是通过将keydown侦听器附加到文档本身来实现的.因此,一旦keydown事件一直冒泡到顶层,对话框就会关闭.
因此,如果您希望继续使用转义键来关闭对话框,并且希望保持转义键不会传播到父节点,则需要自己实现该closeOnEscape
功能以及stopPropagation
在事件对象上使用该方法(请参阅有关event.stopPropagation的MDN文章).
(function() {
var dialog = $('whatever-selector-you-need')
.dialog()
.on('keydown', function(evt) {
if (evt.keyCode === $.ui.keyCode.ESCAPE) {
dialog.dialog('close');
}
evt.stopPropagation();
});
}());
Run Code Online (Sandbox Code Playgroud)
这样做是为了侦听对话框中发生的所有keydown事件.如果按下的键是转义键,则正常关闭对话框,无论evt.stopPropagation
调用是什么,keydown都不会冒泡到父节点.
我有一个现场示例显示这里 - http://jsfiddle.net/ud9KL/2/.
and*_*ter 18
你需要closeOnEscape ......
示例代码:
$(function() {
$("#popup").dialog({
height: 200,
width: 400,
resizable: false,
autoOpen: true,
modal: true,
closeOnEscape: false
});
});
Run Code Online (Sandbox Code Playgroud)
现场观看:http://jsfiddle.net/vutdV/
您可以使用以下
$(document).keyup(function (e) {
if (e.keyCode == 27) {
$('#YourDialogID').dialog('close')
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30629 次 |
最近记录: |