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'。
这将为您节省编辑每个 Dialog 调用的繁重工作, 对于“dojox/widget/DialogSimple”小部件也是如此。

于 2015-01-30T15:04:03.750 回答