我有以下标记字段声明:
{
xtype: 'tagfield',
fieldLabel: 'Sex',
labelAlign: 'right',
name: 'sex',
multiSelect: false,
queryMode: 'local',
displayField: 'sexName',
valueField: 'sex',
allowBlank: false,
flex: 1,
editable: true,
growMax: 45,
store: Ext.create('Ext.data.Store', {
autoLoad: true,
fields: ['sexName', 'sex'],
data: [{
sexName: 'mail',
sex: 'mail'
},{
sexName: 'femail',
sex: 'femail'
}]
})
}
当我尝试将tagfield的值设置为组合框时,我希望这可以工作,但我在控制台中收到以下错误。
[E] Ext.form.field.ComboBox.doSetValue():无法将值添加到非 multiSelect ComboBox未捕获错误:无法向非添加值 multiSelect ComboBox
我做错了什么?
感谢您的帮助!
答案 0 :(得分:0)
我们遇到过类似的问题。 (我们使用ExtJs 5)
我们需要组合自由文本输入,一次只能选择/输入一个值。因此,我们使用TagField并将multiSelect
设置为false
。
它开始表现得很奇怪,自由文本输入的可能性已经消失。
我认为,解决方案将解决原始问题的问题:
multiSelect
返回true
change
事件并将值更改为用户使用问题中的代码示例:
{
xtype: 'tagfield',
fieldLabel: 'Sex',
labelAlign: 'right',
name: 'sex',
multiSelect: true,
queryMode: 'local',
displayField: 'sexName',
valueField: 'sex',
allowBlank: false,
flex: 1,
editable: true,
growMax: 45,
listeners: {
change: function (field, newValue ,oldValue ,eOpts) {
newValue = newValue.filter(function(el) {
return el !== oldValue[0];
});
this.setValue(newValue );
}
}
},
...
}
oldValue是一个只包含一个元素(前一个值)的数组。 newValue是一个包含两个元素的数组:previous值和new selected value。