2012-04-23 30 views
0

我想断开datetimebox(_onBlur)的事件。它在文件“TextBox.js”中提到。 'dojo.disconnect'适用于我在javascript中定义的自定义事件。但我想为dojo小部件本身做同样的事情。我无法断开dojo小部件(Textbox.js)中声明的事件(_onBlur)。断开datetimebox的dojo事件

下面是声明在Textbox.js部件..我应该如何申报断开事件,以下事件是永远不会调用??? ..下面再代码是小部件&这不是我的代码中使用dojo.disconnect ..我能够断开在我的自定义的js文件中声明的事件,但我不是能够断开事件,如下面随Dojo库插件的js文件中声明..请建议

_onBlur:功能(E){

 this._setBlurValue(); 

this.inherited(arguments);

 if(this._selectOnClickHandle){ 
      this.disconnect(this._selectOnClickHandle); 
     } 
     if(this.selectOnClick && dojo.isMoz){ 
      this.textbox.selectionStart = this.textbox.selectionEnd = undefined; // clear selection so that the next mouse click doesn't reselect 
     } 

     this._updatePlaceHolder(); 

}, 

西门,我想它,因为它是有利的,当我们要覆盖与我们自己的自定义事件道场内置的事件。例子是当你使用dojo网格并使用箭头键(向上,向右,向下)时,单元格被突出显示(虚线在单元格周围),指示当前单元格...现在,如果你想禁用,即保持单元格为高亮有一段时间可以让你说你在那个单元上显示编辑/文本,但是如果用户再次尝试按下箭头键,你会看到虚线仍然在你不想要的周围旋转......最简单的是禁用/断开此事件与网格绑定的事件事件是“doKeyEvent”,它监听关键事件并执行单元格的hghlgt ..我通过其他事件实现了这一点,以抵消或取消网格正在做的事情,但仍然...最简单的是禁用/断开连接网格事件本身&让我们专注于业务事件&逻辑reqd而不是尝试编写默认为dojo组件的事件,这可能对一些业务并不适合所有人..这个计数器事件h以便为其他组件发生

回答

0

Dojo断开连接仅适用于由dojo.connect添加的事件。我不认为你可以做你想做的事情。为什么你需要这样做,也许还有另一种解决你的问题的方法?

0

正如Simon指出的,Dojo断开连接仅适用于由dojo.connect添加的事件。

但你的问题的解决方案可能是覆盖onBlur()功能,因此它不会执行,例如:

this.onBlur = function(){ 
    return false; 
}