【问题标题】:ExtJS: focus fieldExtJS:焦点字段
【发布时间】:2010-09-21 21:55:34
【问题描述】:

我有一个包含表单 (formPanel) 的窗口。用户可以在 ExtJS 环境中单击按钮显示此窗口。我希望当用户单击按钮以显示窗口时,窗口包含的表单内的特定字段将聚焦(我的意思是光标应该移动到该字段,以便用户可以插入数据而无需首先单击字段本身)。

我尝试了一些解决方案,但无法让它们发挥作用。有什么提示吗?

这是我尝试过的,使用了我找到的一些示例……但它没有按预期工作。这个 function() 由我界面中的 ExtJS 按钮调用:

function openCardForm(IDUser){

    //Reset the value of this field which may be still there from the prev. usage
    Ext.getCmp('assignFormCARDNUMBER').reset();
    formAssignCard.getForm().load({ 
        url: 'gen/jsonUser.php',
        params:{IDUser:IDUser},
        waitMsg: 'Loading...'
    });
    //Try to focus the Card field when rendering the form
    Ext.getCmp('assignFormCARDNUMBER').on("render",function(){
        Ext.getCmp('assignFormCARDNUMBER').focus(true,10);
    });
    win.show();
}

【问题讨论】:

    标签: extjs focus


    【解决方案1】:

    改用show

    【讨论】:

    • 谢谢,成功了。实际上,我终于将新的处理程序放在插入表单的窗口的 show 事件上。此外,我添加了一些延迟来聚焦元素,这似乎是必要的。聚焦代码变成:Ext.getCmp('assignFormCARDNUMBER').focus(true,800);
    【解决方案2】:

    或使用

    defaultButton : yourComponentToFocusOn
    

    有点混乱,但 defaultButton 可以是任何组件(不一定是实际按钮)

    【讨论】:

      【解决方案3】:

      您也可以尝试在其配置选项中将字段的 tabindex 设置为零...这样您甚至不需要添加侦听器来检测 show 事件。

      即:

      tabIndex:0
      

      【讨论】:

      • 应该注意的是,自最初的问题/答案以来,框架已经发生了实质性的变化
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 2016-09-03
      相关资源
      最近更新 更多