禁用dojo中的escape键

禁用dojo中的escape键,dojo,dialog,keypress,Dojo,Dialog,Keypress,我需要在对话框打开时禁用escape键。当前,当我单击escape按钮时,对话框关闭,事务正在提交。我尝试了以下代码段,但它不起作用 连接(对话框,“onKeyPress”,函数(e){ var key=e.keyCode | | e.charCode; var k=dojo.keys; 如果(key==k.ESCAPE){ event.preventDefault(); d、 停止事件(事件); } }); 请你帮个忙好吗我找了很多,还没有找到解决我问题的合适办法。 感谢您的帮助。Doj

我需要在对话框打开时禁用escape键。当前,当我单击escape按钮时,对话框关闭,事务正在提交。我尝试了以下代码段,但它不起作用

连接(对话框,“onKeyPress”,函数(e){ var key=e.keyCode | | e.charCode; var k=dojo.keys; 如果(key==k.ESCAPE){ event.preventDefault(); d、 停止事件(事件); } }); 请你帮个忙好吗我找了很多,还没有找到解决我问题的合适办法。
感谢您的帮助。

Dojo使用
\u onKey
事件进行访问。您可以使用以下命令覆盖它:

dialog._onKey = function() { }

我写了一个例子,按Escape键应该不再有效。

如果您想在所有对话框(而不是特定实例)中覆盖Escape键,您可以使用:

require(['dojo/aspect','dijit/Dialog'],函数(aspect,Dialog){
Aspect.around(Dialog.prototype,“_onKey”,函数(原始){
返回函数(){};//无操作
});
});

您可以在新文件中为对话框小部件创建如下扩展名:

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”小部件也是一样。

谢谢Dimitri M.。我确实用新对话框扩展了我的对话框。_onKey使用了我想做的代码。。现在可以工作了。。非常感谢。。如果没有人知道这一点,这对其他开发人员来说可能会非常烦人。我宁愿选择扩展对话框(就像@Ramesh最后做的那样),而不是操纵它。