当用户关闭没有保存的标签时,我正在尝试实施确认对话框。
为此,我使用组件(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');
}
答案 0 :(得分:1)
由于Ext.form.ComboBox
正在扩展Ext.form.TriggerField
,您可以通过
focusedEl.triggerBlur();