3

ダイアログが開いているときにエスケープキーを無効にする必要があります。現在、エスケープボタンをクリックするとダイアログが閉じ、トランザクションが送信されます。次のコードスニペットを試しましたが、クロムが機能しません。

                    dojo.connect(dialog, "onKeyPress", function(e){ 
                    var key = e.keyCode || e.charCode; 
                    var k = dojo.keys; 

                    if (key == k.ESCAPE) { 
                         event.preventDefault();

                     d.stopEvent(event);
                    } 
                    }); 

これについて助けていただけませんか..私はたくさん検索しましたが、私の問題に適した解決策が見つかりませんでした. 前もって感謝します..

4

3 に答える 3

7

Dojo は_onKeyアクセシビリティのためにイベントを使用します。以下を使用してオーバーライドできます。

dialog._onKey = function() { }

JSFiddleの例を書きましたが、Escape キーを押しても機能しなくなりました。

于 2013-03-15T12:26:00.813 に答える
3

(特定のインスタンスではなく) すべてのダイアログでエスケープ キーをオーバーライドしたい場合は、dojo/aspectを使用できます。

require(['dojo/aspect', 'dijit/Dialog'], function (Aspect, Dialog) {
    Aspect.around(Dialog.prototype, '_onKey', function (original) {
        return function () { }; // no-op
    });
});
于 2013-10-22T20:08:27.687 に答える
0

新しいファイルで、次のように Dialog ウィジェットの拡張機能を作成できます。

define(["dojo/_base/declare", "dijit/Dialog"],
    function(declare, Dialog){
    return declare(Dialog, {

        //Prevents the 'ESC' Button of Closing the dialog
        _onKey: function() { }

    });
});

ファイルを dojo ディレクトリ (例: dojo/my/my_dialog.js) に保存し、'dijit/Dialog' を呼び出す代わりに、単に 'my/my_dialog' を呼び出します。
これにより、各ダイアログ呼び出しを編集する手間が省けます。 また、「dojox/widget/DialogSimple」ウィジェットに対しても同じことが行われます。

于 2015-01-30T15:04:03.750 に答える