我正在使用 extjs 3.4.0。
如果我只需要它能够从列表中选择项目,或者我也希望它能够提交任意文本,我试图弄清楚组合框有什么不同。
看起来 forceSelection: true/false 是这里的关键配置选项,使用 forceSelection: true 只能从下拉菜单中选择一项,使用 forceSelection: false 应该可以输入任意文本。
查询服务器并使用匹配选项获取下拉菜单效果很好,但我无法让它提交我的任意文本(下拉菜单上没有的内容)。如果我只是键入提交的查询,但如果没有任何匹配项,则按 Enter 键不会发生任何事情,即使我希望 Enter 会发送请求,类似于在搜索匹配项时发送请求的方式。
我是否需要将组合框放在 Form 实例中才能提交任意文本?这会让人感觉很奇怪,因为组合框在搜索匹配项时完全能够发送请求。
更新:
这是我的实际代码:
var store = new Ext.data.JsonStore({
url: '/store',
root: 'items',
totalProperty: 'count',
fields: Ext.data.Record.create( [ 'name', 'id' ] ),
id: 'id' });
var combo = new Ext.form.ComboBox({
store: store,
forceSelection: false,
typeAhead: true,
loadingText: '',
width: 170,
hideTrigger: true,
itemSelector: 'div.item',
applyTo: 'div.box',
queryParam: 'tx',
hiddenValue: 'something',
name: 'name',
displayField: 'name',
submitValue: true,
allowBlank: false,
onSelect: function( record ) { alert( record.data.name ); }
});