以编程方式模糊 EXTJS 3.2.1 中的组合框控件不会触发“模糊”事件

Programmatically Blurring combobox control in EXTJS 3.2.1 does not fire 'blur' event

本文关键字:模糊 控件 事件 EXTJS 方式 编程 组合      更新时间:2023-09-26

当用户关闭没有保存的选项卡时,我正在尝试实现确认对话框。

为此,我使用了组件的(文本字段、复选框、组合框等)。"更改"事件。但是,由于"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?'));
        }
    }
}

此方法适用于所有控件(文本字段、文本区域、复选框、日期字段),但组合框除外。字段模糊,但"模糊"事件不会触发,因此"更改"事件不会触发。我错过了这个原因吗?谢谢!

编辑:我尝试以编程方式触发"模糊"事件,但"更改"事件仍然没有触发。

focusedEl.fireEvent('blur');

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

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

由于Ext.form.ComboBox正在扩展Ext.form.TriggerField,因此您可以通过以下方式编程触发模糊

focusedEl.triggerBlur();