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

时间:2015-04-08 08:30:49

标签: javascript extjs

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

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 - 模糊,没有其他事件。

1 个答案:

答案 0 :(得分:1)

您应该在beforeedit插件的cellediting事件中进行验证(至少在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,则会取消该版本。