我有一个组合框,它是各种地址的列表。选择任何地址后,select事件会在地图上绘制此地址。我想以这样的方式更改此程序:如果用户输入的地址不是Combo商店的一部分,则该地址仍应在地图上绘制。我不需要修改组合商店。如何才能做到这一点?什么事件监听器可以触发此类事件?我是否需要切换到文本字段?
{
xtype: 'combobox',
name: 'address1',
style: {
marginLeft: '15px'
},
store: Ext.create('MyStore'),
valueField: 'address',
displayField: 'address',
triggerAction: 'all',
emptyText: 'Select Address',
typeAhead: true,
minChars: 2,
typeAheadDelay: 100,
queryMode: 'remote',
width: 300,
queryParam: 'searchAddress',
hideTrigger:true,
listeners: {
select: function(combo, records, eOpts){
//Plot the address from records[0].data.address
}
}
}
答案 0 :(得分:0)
如果显示下拉列表,用户可以按回车键表示该地址是其中之一 选择或输入。目前,特殊键事件不能总是 捕获它,因为在输入而不是输入值,它 选择商店中的第一个值
specialkey
确实无法捕获。这是因为事件是在keydown
上模拟的,下拉列表故意停止,因为可以看到here。
仍然有办法对用户输入做出反应:
方法1
使用这样的自定义onFieldMutation
方法:
Ext.define('MyCombo', {
extend: 'Ext.form.ComboBox',
onFieldMutation: function(e) {
if (e.getKey() === e.ENTER) {
// Call address plotting method here
}
return this.callParent(arguments);
}
});
方法2
使用keyup
:
listeners: {
keyup: {
fn: function(e) {
if (e.getKey() === e.ENTER) {
// Call address plotting method here
}
},
element: 'inputEl'
}
}