ExtJS网格单元格编辑器,防止焦点松动问题

ExtJS Grid cell editor, prevent focus loose issue

本文关键字:焦点 问题 网格 单元格 编辑器 ExtJS      更新时间:2023-09-26

网格单元格编辑器有问题。我有细胞的验证,我需要防止它们在验证错误发生时失去焦点。我就是这么做的:

blur: function (field, event) {
                            if (field.value > field.maxValue || field.value < field.minValue) {
                                field.focus();
                                return false;
                            }
                        },
specialkey: function (field, event) {
                            if (event.getKey() == 9 ) {
                                if (field.value > field.maxValue || field.value < field.minValue) {
                                    field.focus();
                                    return false;
                                }
                            }
                        }

当您尝试单击网格外的任何位置,或尝试使用Tab键选择下一个单元格时,此部分可以正常工作。问题是,如果您要单击另一个单元格,我仍然会失去焦点。这就是调试显示的:

cell_1 - blur, cell_1 - focus, cell_2 - blur, cell_2 - focus

有人有类似的问题吗?
还有一点令人困惑的是,如果您将断点放在"模糊"侦听器中,它就会工作!调试将显示:cell_1-flur且没有其他事件。

您应该在cellediting插件的beforeedit事件中进行验证(至少在ExtJs 4中):

this.cellEditing = new Ext.grid.plugin.CellEditing({
        clicksToEdit : 1,
        listeners : {
            beforeedit : function (editor, e) {
                // do your valdiation here :
                return (e.record.get('your_field') != 'aaa');
            }
        }
    });

如果你在这里返回false,它将取消版本。