ExtJs -从网格列编辑器中删除组合框焦点

62lalag4  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(147)

我有一个包含组合框的网格列作为它的编辑器,我使用celleditor插件,我想在其中写一些验证逻辑。当我试图从组合框单元格中选择一些内容时,它应该会在值更改后失去焦点,然后转到validateedit侦听器。我知道组合框上有一个blur()方法可以解决这个问题。但根据文档,这是一个私有方法,所以我避免了。我想知道是否有另一种方法来失去对更改或选择器折叠或任何配置的关注,这将执行字段更改验证。下面是代码和小提琴。

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create('Ext.data.Store', {
            storeId: 'simpsonsStore',
            fields: ['name', 'email', 'phone'],
            data: [{
                name: 'Lisa',
                email: 'lisa@simpsons.com',
                phone: '555-111-1224'
            }, {
                name: 'Bart',
                email: 'bart@simpsons.com',
                phone: '555-222-1234'
            }, {
                name: 'Homer',
                email: 'homer@simpsons.com',
                phone: '555-222-1244'
            }, {
                name: 'Marge',
                email: 'marge@simpsons.com',
                phone: '555-222-1254'
            }]
        });

        Ext.create('Ext.grid.Panel', {
            title: 'Simpsons',
            store: Ext.data.StoreManager.lookup('simpsonsStore'),
            columns: [{
                header: 'Email',
                dataIndex: 'email',
                flex: 1,
                getEditor: function () {
                    return {
                        validateOnChange: false,
                        validateOnBlur: false,
                        xtype: 'combobox',
                        allowBlank: false,
                        displayField: "name",
                        listeners: {
                            blur: function () {
                                console.log("blurred");
                            },
                            change: function () {
                                console.log('change');
                                // this.blur();
                            }
                        },
                        store: {
                            data: [{
                                name: "A"
                            }, {
                                name: "B"
                            }, {
                                name: "C"
                            }, {
                                name: "D"
                            }]
                        }
                    }
                }
            }],
            selModel: 'cellmodel',
            plugins: {
                cellediting: {
                    clicksToEdit: 1,
                    listeners: {
                        validateedit: function () {
                            console.log("validated")
                        }
                    }
                }
            },
            height: 200,
            width: 400,
            renderTo: Ext.getBody()
        });
    }
});
qkf9rpyu

qkf9rpyu1#

您可以尝试completeEdit方法作为替代方法:

listeners: {
    blur: function () {
        console.log("blurred");
    },
    change: function () {
        console.log('change');
        this.up('grid').getPlugin().completeEdit();
    }
},

相关问题