在EXTJS 3.2.1中以编程方式模糊组合框控制不会触发'模糊'事件

时间:2013-11-15 19:30:23

标签: javascript extjs

当用户关闭没有保存的标签时,我正在尝试实施确认对话框。

为此,我使用组件(textfield,checkbox,combobox等)'change'事件。但是,由于“更改”事件要求字段模糊,因此如果用户更改字段但在关闭选项卡之前不会失去字段的焦点,则会出现问题。

为了解决这个问题,我使用选项卡的'beforeclose'事件以编程方式模糊()活动元素,因此如果字段已更改,则触发'change'事件:

listeners: {
    beforeclose: function(form) {
        var focusedEl = Ext.getCmp(document.activeElement.id);
        focusedEl.blur();

        if(tabRC.F('AgentCaseForm').dirty.items.length > 0) {                                                   
            return(confirm('There are unsaved changes on this tab. Are you sure you want to close?'));
        }
    }
}

此方法适用于组合框的所有控件(textfield,textarea,checkbox,datefield)。该字段模糊,但“模糊”事件不会触发,因此“更改”事件不会触发。这是否有理由让我失踪?非常感谢你!

编辑:我尝试以编程方式触发“模糊”事件,但“更改”事件仍未触发。

focusedEl.fireEvent('blur');

编辑2:解决方案是这样做:

var focusedEl = Ext.getCmp(document.activeElement.id);
if (focusedEl && focusedEl.isDirty()) {
    focusedEl.fireEvent('change');
}

1 个答案:

答案 0 :(得分:1)

由于Ext.form.ComboBox正在扩展Ext.form.TriggerField,您可以通过

以编程方式触发模糊
focusedEl.triggerBlur();