ExtJS 4.2可编辑的组合异常行为

时间:2019-05-20 11:56:16

标签: extjs extjs4.2

我有这样的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;
    }
}

此组合是表单的一部分,奇怪的行为是这样:

  1. 如果我键入一些文本,则该组合将筛选出完美的结果,并且可以在键入筛选后选择任何结果。当我按下按钮提交表单时,在控制器中的某个点上,我使用combo.findRecord来获取组合中所选项目的额外数据,处理这些额外数据并毫无问题地提交表单。
  2. 与第一种情况相同,我输入了一些文本,组合过滤器并选择了一个选项,但是如果我选择了部分/全部文本(单击并在文本上移动鼠标/双击鼠标),然后按组合键ctrl + c(复制),然后按提交按钮,combo.findRecord返回false,案例1和案例2之间的唯一区别是我复制(未剪切)所选项目文本的某些部分。

知道为什么会这样吗?我已经用谷歌搜索了,但是没有找到任何线索。

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;