来自Extension Library的不可关闭的对话框 [英] Non closable dialogbox from Extension Library

查看:144
本文介绍了来自Extension Library的不可关闭的对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从ExtLib创建一个对话框,我想阻止用户按Escape或点击X图标。



我已经检查过几篇关于相同实现的帖子但是没有人使用ExtLib的Dialogbox。



我能够隐藏CSS的图标,我正在尝试使用dojo.connect来防止使用Escape键:

  XSP.addOnLoad(function(){
dojo.connect(dojo.byId(#{id:dlgMsg }),onkeypress,function(evt){
if(evt.keyCode == dojo.keys.ESCAPE){
dojo.stopEvent(evt);
}
});
});注意,只有手动创建我的对话框而不是ExtLib,我才能使其正常工作;



<那么我可以使用例如:

  dojo.connect(dojo.byId(divDlgLock),onkeypress,function evt){
if(evt.keyCode == dojo.keys.ESCAPE){
dojo.stopEvent(evt);
}
});

任何想法?

解决方案

通过添加输出脚本块,您可以扩展现有的声明:

 < xp:scriptBlock id = scriptBlockNonCloseableDialog > 
< xp:this.value>
<![CDATA [
dojo.provide(extlib.dijit.OneUIDialogNonCloseableDialog);
dojo.require(extlib.dijit.Dialog);
dojo.declare(
extlib.dijit.OneUIDialogNonCloseableDialog,
extlib.dijit.Dialog,
{
baseClass:,
templateString: dojo.cache(extlib.dijit,templates / OneUIDialog.html),
disableCloseButton:true,
_onKey:function(evt){
if(this.disableCloseButton& amp ;
evt.charOrCode == dojo.keys.ESCAPE)return;
this.inherited(arguments);
},
_updateCloseButtonState:function(){
dojo .style(this.closeButtonNode,
display,this.disableCloseButton?none:block);
},
postCreate:function(){
this。 inherited(arguments);
this._updateCloseButtonState();
dojo.query('form',dojo.body())[0] .appendChild (this.domNode);
},
_setup:function(){
this.inherited(arguments);
if(this.domNode.parentNode.nodeName.toLowerCase()=='body')
dojo.query('form',dojo.body())[0] .appendChild(this.domNode );
}
}
);

//这个选择器对话框用来抓取正确的UI
XSP._dialog_type =extlib.dijit.OneUIDialogNonCloseableDialog;
]]>
< / xp:this.value>
< / xp:scriptBlock>


I'm creating a dialogbox from ExtLib and I want to prevent users to press Escape or click on X icon.

I've checked several posts about same implementation but none of them using a Dialogbox from ExtLib.

I was able to hide icon with CSS and I'm trying with dojo.connect to prevent the use of Escape key:

    XSP.addOnLoad(function(){
    dojo.connect(dojo.byId("#{id:dlgMsg}"), "onkeypress", function (evt) {  
        if(evt.keyCode == dojo.keys.ESCAPE) {           
            dojo.stopEvent(evt);
        }
    });
});

Note I'm able to get it working only if I create my dialogbox manually and not from ExtLib; then I can use for example:

dojo.connect(dojo.byId("divDlgLock"), "onkeypress", function (evt) {
        if(evt.keyCode == dojo.keys.ESCAPE) {           
            dojo.stopEvent(evt);
        }
});

Any ideas?

解决方案

By adding an output script block you can extend the existing declaration:

<xp:scriptBlock id="scriptBlockNonCloseableDialog">
   <xp:this.value>
      <![CDATA[
         dojo.provide("extlib.dijit.OneUIDialogNonCloseableDialog");
         dojo.require("extlib.dijit.Dialog");
         dojo.declare(
            "extlib.dijit.OneUIDialogNonCloseableDialog",
            extlib.dijit.Dialog,
            {
               baseClass: "",
               templateString: dojo.cache("extlib.dijit", "templates/OneUIDialog.html"),
               disableCloseButton: true,
               _onKey: function(evt){
               if(this.disableCloseButton &&
                  evt.charOrCode == dojo.keys.ESCAPE) return;
                  this.inherited(arguments);
               },
               _updateCloseButtonState: function(){
                  dojo.style(this.closeButtonNode,
                  "display",this.disableCloseButton ? "none" : "block");
               },
               postCreate: function(){
                  this.inherited(arguments);
                  this._updateCloseButtonState();
                  dojo.query('form', dojo.body())[0].appendChild(this.domNode);
               },
               _setup: function() {
                  this.inherited(arguments);
                  if (this.domNode.parentNode.nodeName.toLowerCase() == 'body')
                     dojo.query('form', dojo.body())[0].appendChild(this.domNode);               
               }        
            }
         );

         // This is used by the picker dialog to grab the correct UI
         XSP._dialog_type="extlib.dijit.OneUIDialogNonCloseableDialog";
      ]]>
   </xp:this.value>
</xp:scriptBlock>

这篇关于来自Extension Library的不可关闭的对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆