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();、ダイアログを開いた要素にフォーカスがなくなり、Enterキーがキャプチャされます。

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

これは、ダイアログにフォーカスがあるかどうかに関係なく機能します。これはおそらくあなたが望むものです。このコードは、ダイアログが開いていないときに実行$('#dialogError').dialog('close');されますが、実行しても悪影響はありません。

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

于 2012-07-13T19:02:22.657 に答える
0

ハンドラ falseから戻ってみてください:keydown

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 に答える