4

我有一个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-focusetc css 类,并且检查对象表明私有hasFocus属性仍然为真。

有什么建议么?

我曾尝试f.onBlur()在通话后明确blur()拨打电话,但没有任何区别。

(顺便说一句,该字段不属于表单,因此没有要提交的表单。)

4

2 回答 2

3

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

listeners: {
    specialkey: function(f, e) {
        if (e.getKey() == e.ENTER)
        {
            f.triggerBlur();
            f.blur();
        }
    }
}
于 2013-03-07T17:36:25.263 回答
1

这对我有用:

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

specialkey - 是诸如 textfield、textare、datefield 等组件的侦听器,

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

events.ENTER - 我使用它,当键盘中的“ENTER”时触发

field.nextSibling - 字段引用当前组件,组件的 nextSibling 属性告诉谁将成为下一个组件

最后是 nextfld.focus 关注下一个组件

于 2015-09-03T03:08:51.743 回答