7

我正在使用 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

4 回答 4

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);
});

如果可能的话,最好在正式版​​中修复这个问题。

于 2010-01-05T17:07:44.560 回答
0

对话框是否通过捕获按键事件并停止其对“F5”的传播来禁用 F5 键?

检查此类按键捕获的代码。这可以解释很多!

于 2010-01-05T17:07:18.647 回答
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;
});

所以只需取出“return false”即可。

于 2010-03-05T10:08:11.777 回答
0

解决方案很简单,您只需关注模态对话框的表单元素。此链接的更多说明:

于 2010-12-19T06:44:50.927 回答