我正在使用jquery对话框小部件来显示模式框。但是当按下F5时,模态打开时不会发生刷新。有什么想法吗?
有趣的更新:
试试这个演示:http://jqueryui.com/demos/dialog/#modal-message 现在当焦点在“确定”按钮上时,则刷新(F5)有效,但是当按钮没有焦点时,则不会。
更新2
我们实际上可以在对话框中添加任何类型的控件,将高度和宽度设置为0 css并设置焦点以使刷新工作。这不是最好的解决方案。我仍在尝试让按键工作。
更新3
以下似乎现在有效:
$(document).keydown(function(e)
{
if (e.which == 116) // key code of the F5 button
{
document.location.reload();
}
});
答案 0 :(得分:6)
这似乎是一个常见的问题,我没有看到一个满意的答案。 Stack Overflow上有一些类似的问题,我看到的最好的答案是捕获键并自己触发动作(这是为了触发按钮,所以f5刷新可能更难)我自己看过我正在研究的一个项目。
我怀疑将modal设置为false可能会有所帮助,但我还没有尝试过。
我在ui.dialog.js的第539行找到了这个:
events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
从那里删除keydown和keypress似乎允许普通的浏览器键工作。现在我看起来像这样:
events: $.map('focus,mousedown,mouseup,click'.split(','),
我不知道通过这样做我会删除哪些功能。似乎使用的唯一事件是在第549行:
$(document).bind($.ui.dialog.overlay.events, function(event) {
var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
return (dialogZ > $.ui.dialog.overlay.maxZ);
});
如果可能的话,在官方版本中修复它会很好。
答案 1 :(得分:0)
对话框是否通过捕获按键事件并停止传播'F5'来截取F5键?
检查此类按键捕获的代码。这可以解释很多!
答案 2 :(得分:0)
我有类似的问题,但发现我输入了“return false;”,这是停止所有其他注册的密钥。例如,下面的“return false”将停止识别除xxx和yyy之外的所有其他键(如F5)。
$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});
所以只要拿出“返回假”。
答案 3 :(得分:0)
解决方案很简单,您只需要关注模态对话框的表单元素即可。 有关此link的更多说明: