0

有类似的问题,但他们无法帮助我解决这个问题。

当对话框打开并按 Enter 键时,我希望这相当于关闭对话框。

我已经写了以下内容,但它不起作用。相反,在每次 ENTER 时,焦点都停留在触发对话框打开的元素上,从而产生多个实例。

谢谢

var $dialogError = $('<div id="dialogError"></div>').html(vGraph.getLastErrorMsg()).dialog({
    autoOpen: false,
    open: function() {
        $("#dialogError").keydown(function(e) {
            alert("enter");
            if (e.keyCode == $.ui.keyCode.ENTER) {
                $(this).dialog("close");
            }
        });
    },
    title: 'Error'
});
$dialogError.dialog('open');​
4

3 回答 3

2

也许在打开对话框后使用将焦点设置到 dialogError 元素$('#dialogError').focus();,这样焦点不再在打开对话框的元素上,它会捕获回车键。

于 2012-07-13T18:59:28.243 回答
1
$(document).on('keypress', function(event) {
    if (event.keyCode == $.ui.keyCode.ENTER) {
        $('#dialogError').dialog('close');    
    }
});​

This will work regardless of whether the dialog has focus or not which is probably what you want. This code will execute when the dialog is not open, but running $('#dialogError').dialog('close'); will have no adverse effects.

Example - http://jsfiddle.net/tj_vantoll/x32zC/1

于 2012-07-13T19:02:22.657 回答
0

尝试falsekeydown处理程序返回:

open: function() {
    $("#dialogError").keydown(function(e) {
        alert("enter");
        if (e.keyCode == $.ui.keyCode.ENTER) {
            $(this).dialog("close"); 
            return false;
        }
    });
},

于 2012-07-13T18:57:41.323 回答