Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使ExtJS输入字段失去焦点_Extjs_Extjs4 - Fatal编程技术网

使ExtJS输入字段失去焦点

使ExtJS输入字段失去焦点,extjs,extjs4,Extjs,Extjs4,我有一个numberfield输入,当用户按enter键时,我想失去焦点 以下是当前配置: { xtype: 'numberfield', minValue: 0, maxValue: 99999, hideTrigger: true, keyNavEnabled: false, mouseWheelEnabled: false, enableKeyEvents: true, listeners: { specialkey: function(f, e)

我有一个
numberfield
输入,当用户按enter键时,我想失去焦点

以下是当前配置:

{
  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
etc css类,并且检查该对象表明private
hasFocus
属性仍然为true

有什么建议吗

我曾尝试在
blur()
调用之后显式调用
f.onBlur()
,但没有任何区别


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

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

listeners: {
    specialkey: function(f, e) {
        if (e.getKey() == e.ENTER)
        {
            f.triggerBlur();
            f.blur();
        }
    }
}
这对我很有用:

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-我用它来表示当键盘上输入时会触发的事件

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


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

聚焦另一个组件如何?甚至它的父容器…@VoidMain-cheers,但如果调用
f.up().focus(),结果与调用blur()相同
它不会使
f
失去其聚焦类?快速问题:您是单独调用
f.up().focus()
还是以前调用过
f.blur()
?本地测试表明,如果我调用
f.blur()
调用
f.up().focus()
它会以某种方式被忽略…@VoidMain focus(),但尝试这两种方法会得到相同的结果谢谢!它当然可以工作,但考虑到triggerBlur是私有的,它看起来像一个extjs bug。我将把它传递给ExtJS支持。顺便说一下,这将通过在代码中添加triggerBlur()来解决您的问题。是的。这肯定是一个bug,但这是修复方法。确保你询问了所有你发现的bug。这里有一些非常聪明的人,他们可以为你们修复它们,有时比我的经验中他们的支持更快或更好。事实上,第一个要问的地方也是如此。事实上,我忘了我们有一个extjs的支持订阅:)