我有这样的editable combo
:
xtype : 'combo',
value : '',
queryMode : 'local',
displayField : 'label',
valueField : 'value',
store : someStore,
allowBlank : false,
disabled : true,
typeAhead : true,
listeners : {
beforequery : function(record) {
record.query = new RegExp(record.query, 'i');
record.forceAll = true;
}
}
此组合是表单的一部分,奇怪的行为是这样:
combo.findRecord
来获取组合中所选项目的额外数据,处理这些额外数据并毫无问题地提交表单。combo.findRecord
返回false,案例1和案例2之间的唯一区别是我复制(未剪切)所选项目文本的某些部分。知道为什么会这样吗?我已经用谷歌搜索了,但是没有找到任何线索。
答案 0 :(得分:0)
您可以尝试将 forceSelection 配置添加到组合中并共享结果。
关于, 桑迪普R
答案 1 :(得分:0)
问题出在new RegExp(record.query, 'i')
上,因为在可编辑组合上执行ctrl+c
时,它会在查询之前通过侦听器,有时,组合的值包含常规中使用的字符表达式配置,例如(
,)
或.
。
因此解决方案是对字符串进行换码以进行搜索:
var string= record.query;
string = string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');//This line scapes all special characters
record.query = new RegExp(string,'gi')
record.forceAll = true;