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

修正。この問題は、Ext.form.field.Trigger クラスの奇妙な動作が原因で'triggerBlur()'、通常の'blur()'関数が呼び出されたときにトリガーされません。とても興味深い:

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