组合失去了对打字的关注

时间:2014-09-16 09:39:38

标签: extjs extjs4.1

我的组合使用远程查询。当用户键入内容时,服务器返回匹配的结果。但是,当有很多匹配结果时,组合会扩展,失去焦点并突出显示服务器返回的第一条记录。组合具有以下属性:

...
queryMode:'remote',
enableKeyEvents:true,
forceSelection:true,
...

正在进行的屏幕是:

enter image description here

因此,正如您所看到的,当用户键入最后一个字符时,服务器返回记录,而某些(我认为是愚蠢的)原因突出显示了第一个记录。但更重要的是,不再有焦点,用户必须再次将光标放在该字段上以继续输入。为了解决这个问题,我尝试了这些事件:

 'blur':function(){
    this.focus();
  },
  'keydown':function(){
    this.focus();
  },
  'keypress':function(){
    this.focus();
  },
  'keyup':function(){
    this.focus();
  },

但没有效果。我也尝试使用load事件,但它也没有效果。

3 个答案:

答案 0 :(得分:1)

我也有这个问题,为了解决它使用组合中的afterQuery属性。 像这样:

afterQuery: function() {
    combo.setRawValue(combo.lastQuery);
    },

pd:我认为这是一个Bug,但我不确定...

答案 1 :(得分:1)

我可以解决类似的问题,重点是两个动作:

  1. 设置“selectOnFocus:false”
  2. 更新doRawQuery。 doRawQuery:function(){     var me = this;
  3. ...         me.inputEl.focus();     }

    如果你有被覆盖的版本(我相信你不应该改变原始插件),你可以这样做,不重复逻辑: doRawQuery:function(){         var me = this;

        me.callParent(arguments);
        me.inputEl.focus();
    }
    

答案 2 :(得分:0)

xtype: 'combo',
...
listeners:{
        // repair raw value after blur
        blur:function() {
            var val = this.getRawValue();
            this.setRawValue.defer(1, this, [val]);
        }
}

Look this example(thanks to Saki)