在dojo中禁用转义键

时间:2013-03-14 03:39:42

标签: dojo dialog keypress

我需要在对话框打开时禁用转义键。当我单击转义按钮时,对话框关闭,交易正在提交。我尝试了以下代码片段,但它不能正常工作。

                    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);
                    } 
                    }); 

你能帮忙吗?我已经搜索了很多,并没有找到适合我的问题的解决方案。 非常感谢..

3 个答案:

答案 0 :(得分:6)

Dojo使用_onKey事件进行访问。您可以使用以下方法覆盖它:

dialog._onKey = function() { }

我写了一个例子JSFiddle,点击Escape键不再适用了。

答案 1 :(得分:3)

如果要覆盖所有对话框(而不是特定实例)中的转义键,可以使用dojo/aspect

require(['dojo/aspect', 'dijit/Dialog'], function (Aspect, Dialog) {
    Aspect.around(Dialog.prototype, '_onKey', function (original) {
        return function () { }; // no-op
    });
});

答案 2 :(得分: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调用的艰苦工作, 和#34; dojox / widget / DialogSimple"同样的事情;窗口小部件。