【问题标题】:jquery UI: dialog closes immediately when opened with space barjquery UI:使用空格键打开对话框时立即关闭
【发布时间】:2014-08-01 16:50:36
【问题描述】:

正如标题所解释的,当空格键上的 keydown- 或 keypress-handler 打开一个对话框时,该对话框包含一个可自动对焦的按钮,该按钮会关闭对话框(默认的 ok 按钮),然后在 keyup 时触发该按钮。

这是jsfiddle example

var dialog = $('#d').dialog({ 
    autoOpen: false, 
    buttons: [{text:"ok", click: function () {
                $(this).dialog("close");
            }}] 
});

$(window).keydown(function (event) {
    if (event.which==32 || event.which==13) {
        console.log("TEST");
        dialog.dialog("open");
    } else console.log(event.which);
});

事实上,我的问题和这个问题一样: jquery-ui-dialog-closes-immediately-when-opened-with-onkeypress-enter-space 但是,我想在 keydown (或 keypress)上打开对话框,而不是在 keyup 上打开对话框,正如接受的解决方案中所建议的那样。此外,我不想将自动对焦更改为另一个元素,即第二个空格键实际上应该关闭对话框。

【问题讨论】:

  • 小提琴对我有用。 jsfiddle.net/y3Hqu/6
  • 谢谢,但请注意我的问题中的最后一句话 :)

标签: jquery jquery-ui dialog jquery-ui-dialog


【解决方案1】:

已添加$('button.ui-button').blur();

JS Code

$(window).keydown(function(event) {
    if (event.which == 32 || event.which == 13) {
        console.log("TEST");
        dialog.dialog("open");
        $('button.ui-button').blur();
    } else
        console.log(event.which);
});

更新Fiddle

【讨论】:

  • 谢谢,但这只是禁用焦点 - 请注意我的问题中的最后一句话:第二个空格键应该关闭对话框。
猜你喜欢
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
相关资源
最近更新 更多