你可以告诉别人,当焦点离开时,如何防止在组合框上选择事件吗?
答案 0 :(得分:1)
我在extjs 6.5.2 modern
中遇到了同样的问题。我使用了combobox
queryMode: 'remote'
,forceSelection: true
,自定义itemTpl
,我正在使用select
事件选择项目。 @ Jzf的解决方案对我没有用(我也使用change
事件)所以我不得不暂停select
上的focusleave
事件并在focusenter
恢复{1}}。
这不是一个非常干净的解决方法,但它完成了我的工作。
以下是我的combobox
的完整代码:
{
xtype: 'combobox',
store: Ext.create('demo.store.search.SearchComboStore'),
valueField: 'id',
displayField: 'name',
queryMode: 'remote',
queryParam: 'name',
triggerAction: 'all',
allQuery: '',
minChars: 1,
forceSelection: true,
matchFieldWidth: false,
//[modern] added floated picker config here in order to set the minWidth property for the floated picker
floatedPicker: {
minWidth: (Ext.getBody().getWidth() / 2)
},
itemTpl:
'<div class="ucResultsTable" style="width:' + (Ext.getBody().getWidth() / 2) + 'px">' +
'<div class="ucResultsTableCell" style="width:15%"><b>{value1}</b></div>' +
'<div class="ucResultsTableCell" style="width:15%">{value2}</div>' +
'<div class="ucResultsTableCell" style="width:15%">{value3}</div>' +
'<div class="ucResultsTableCell" style="width:15%">{value4}</div>' +
'<div class="ucResultsTableCell" style="width:15%">{value5}</div>' +
'</div>',
listeners: {
select: function (comboBox, records, eOpts) {
var container = comboBox.up('app-container-panel');
container.fireEvent('selectComboItem', container, records.data);
},
//<Workaround>
//blur/focusleave is firing select event
//and changes the record selection
focusleave: function (comboBox) {
comboBox.suspendEvent('select');
},
focusenter: function (comboBox) {
comboBox.resumeEvent('select');
}
//</Workaround>
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
问题出现是因为组合强制选择,即使用户实际上没有选择其他值。
有几种方法可以解决此问题。
两种方式,用户都必须从组合列表中选择一个项目(这可能是您首先使用forceSelection配置的原因)。