刷新(F5)在jQuery Dialog中不起作用

时间:2010-01-05 16:45:20

标签: jquery jquery-ui jquery-dialog

我正在使用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();
     }
}); 

4 个答案:

答案 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的更多说明: