使ExtJS输入字段失去焦点

时间:2013-03-07 11:45:48

标签: extjs extjs4

我有一个numberfield输入,当用户点击回车键时我想要失去焦点。

这是当前的配置:

{
  xtype: 'numberfield',
  minValue: 0,
  maxValue: 99999,
  hideTrigger: true,
  keyNavEnabled: false,
  mouseWheelEnabled: false,
  enableKeyEvents: true,

  listeners: {
    specialkey: function(f, e) {
      if (e.getKey() == e.ENTER)
        f.blur();
    }
  }
}

specialkey处理程序工作,按预期调用blur(),但唯一的结果是插入符号从输入中消失(表示DOM文本输入元素已模糊)。该字段仍然包含所有x-form-focus等css类,并且检查对象显示私有hasFocus属性仍然是真的。

有什么建议吗?

我已尝试在f.onBlur()来电后明确致电blur(),但没有任何区别。

(顺便说一下,该字段不属于某个表单,因此无需提交表单。)

2 个答案:

答案 0 :(得分:3)

修复。该问题是由Ext.form.field.Trigger类中的奇怪行为引起的,当调用常规'triggerBlur()'函数时,它们不会触发'blur()'。非常有趣:

listeners: {
    specialkey: function(f, e) {
        if (e.getKey() == e.ENTER)
        {
            f.triggerBlur();
            f.blur();
        }
    }
}

答案 1 :(得分:0)

这对我有用:

specialkey: function(field,events) {
    if (events.getKey() == events.ENTER) {
        var nextfld = field.nextSibling(); 
        nextfld.focus(true,100);
    }
}

特殊键 - 是一个组件的监听器,如textfield,textare,datefield等,

events.getKey - 获取用户键盘输入

events.ENTER - 我使用了这个,当" ENTER"在键盘

field.nextSibling - 字段是指当前组件,以及组件的nextSibling属性,用于告知谁将成为下一个组件

最后是nextfld.focus来聚焦下一个组件