我想断开datetimebox事件(_onBlur)。它在文件“TextBox.js”中提到。 'dojo.disconnect'适用于我在javascript中定义的自定义事件。但我想为dojo小部件本身做同样的事情。我无法断开dojo小部件(Textbox.js)中声明的事件(_onBlur)。
下面是Textbox.js小部件中的声明..我应该如何声明以下事件永远不会调用的断开事件??? ..再次下面的代码来自widget&它不是我的代码..使用dojo.disconnect我能够断开在我的自定义js文件中声明的事件,但我无法断开在dojo库附带的widget js文件中声明的下面的事件..请建议
_onBlur:function(e){
this._setBlurValue();
this.inherited(参数);
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();
},
Simon,我想要它,因为当我们想用我们自己的自定义事件覆盖dojo内置事件时,拥有它是有利的。示例是当您使用dojo网格并使用箭头键(向上,向右,向下......)时,单元格突出显示(虚线围绕单元格),指示当前单元格...现在,如果要禁用,即保持单元格为hghlighted为一段时间让我们说你在那个单元格上显示编辑/文本,但是如果用户再次尝试按箭头键,你会看到虚线仍然在你不想要的周围旋转...最简单的是在这个中禁用/断开事件绑定到网格的case事件是“doKeyEvent”,它监听键事件并执行单元格的hghlgt。我已经通过keypress&其他事件来抵消或取消网格正在做什么,但仍然最简单的是禁用/断开此网格事件本身&让我们专注于商业活动&逻辑reqd而不是尝试编写默认为dojo组件的事件的代码,这可能对某些业务而言并非对所有人都有利。此计数器事件也必须为其他组件发生
答案 0 :(得分:0)
Dojo disconnect仅适用于dojo.connect添加的事件。我认为你不能做你想做的事。为什么你需要这样做,也许还有另一种解决你问题的方法?
答案 1 :(得分:0)
正如Simon所指出的,Dojo断开连接仅适用于dojo.connect添加的事件。
但问题的解决方案可能是覆盖onBlur()
函数,因此无法执行,例如:
this.onBlur = function(){
return false;
}