我有一个包含组合框的网格列作为它的编辑器,我使用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()
});
}
});
1条答案
按热度按时间qkf9rpyu1#
您可以尝试completeEdit方法作为替代方法: