2013-03-14 32 views
2

我有一個要求,當對話框打開時禁用轉義鍵。當我單擊轉義按鈕時,對話框關閉並且事務正在提交。我嘗試了下面的代碼片段,但它不工作鉻。在dojo中禁用轉義鍵

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

能否請你幫上this..i尋覓了很多,還沒有發現我的問題一個合適的解決方案。 謝謝inadvance ..

回答

6

Dojo使用_onKey事件進行訪問。您可以通過使用覆蓋它:

dialog._onKey = function() { } 

我寫了一個例子JSFiddle,擊中Escape鍵不能正常工作了。

+0

感謝迪米特里M..i沒有與我打算now..thanks一噸... – Ramesh 2013-03-19 10:28:57

2

在要覆蓋所有對話框(而不是某個特定實例)ESC鍵時,您可以使用dojo/aspect

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

工作do..its這可以爲其他開發人員,如果很討厭的代碼的新dialog._onKey致以對話框沒有人知道這一點。我寧願選擇擴展對話框(比如@Ramesh最終做的),而不是操縱它。 – g00glen00b 2013-10-23 09:56:26

0

您可以插件這樣一個爲對話框創建一個擴展新文件:

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

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

    }); 
}); 

將文件保存到道場目錄(比如:道場/我的/ my_dialog.js), 和而不是調用: '的dijit /對話框',只要致電: '我/ my_dialog'。
這將爲您節省編輯每個對話框通話的難度, 並且與「dojox/widget/DialogSimple」小工具相同。