取消dijit / form / FilteringSelect的onChange事件

时间:2014-03-28 21:50:58

标签: dojo onchange dijit.form

当用户尝试更改FilteringSelect中的值时,我需要能够取消onChange,具体取决于是否有其他操作使信息变脏。

我曾尝试使用FilteringSelect的undo()方法,但它不起作用。我已经为onChange事件尝试了aspect.before,但由于控件已经获得了新值,因此这似乎太迟了。我试图挂钩调用onChange的方法,但一直无法找到该方法。

我如何才能最好地完成这项工作?

1 个答案:

答案 0 :(得分:2)

将值设置为此窗口小部件后," _lastDisplayedValue"的值也更新。因此,撤销不适合这种情况。

如果需要根据某些条件分离此窗口小部件上的onChange事件处理程序," _onChangeActive"私人国旗可以使用。这不应该被程序员明确地使用,而是用于小部件的内部目的。但是,对于这种情况,这可能会造成黑客攻击。

设置_onChangeActive = false,处理程序将被分离。但是不要忘记再次将其重置为true,否则onChange函数不起作用,如果将其设置为false。

e.g:

    var widget = dijit.byId('widgetId');
    widget.set('_onChangeActive',false);
    widget.set('value',newValue); //onChange handler function does not run
    //not just programmatic, 
    //even if user tries to select, when onChangeActive=false this works
    widget.set('_onChangeActive',true);
    //now the onChange is resumed back