1

我已经在 extjs 中创建了向导。在我有 2 个字段的表单中,当用户填写最后一个文本字段时,我需要按下Enter该操作,因为用户单击下一个按钮。如何实现它

4

3 回答 3

5
{
    xtype:'textfield',
    name:'whatever',
    enableKeyEvents: true,
    listeners: {
        keypress : function(textfield,eo){
            if (eo.getCharCode() == Ext.EventObject.ENTER) {
                //enter is pressed call the next buttons handler function here.
                this.up('form').down('nextButton').handler
            }
        }
    }
}
于 2012-09-06T08:17:43.997 回答
1

或者您可以直接定义函数的名称:

如果您的按钮是这样创建的:

xtype: 'button',
text : 'Go',
listeners: {
    click: {
        fn: me.onSearchClick,
        scope: me
    }
}

你可以这样做:

{ 
    xtype:'textfield',
    name:'whatever',
    enableKeyEvents: true,
    listeners: {
        keypress : function(textfield,eventObject){
            if (eventObject.getCharCode() == Ext.EventObject.ENTER) {
                me.onSearchClick();
            }
        }
    }
}
于 2012-10-29T09:54:36.857 回答
0

我实现这一点的方式与上述答案不同,并且在我看来它是优越的,因为您可以使用正确的 MVC 模型,而不是在您所看到的视图中执行它。

在我的控制器中,我在事件定义中使用了以下代码(我们在 init 函数中执行此操作):

'searchform textfield': {
    specialkey: this.specialKeyPress
},

其中 'searhform' 是在控制器中为表单定义的选择器。

然后,处理此问题的函数如下所示:

/**
*   Peform the serach when the enter key is pressed.
*/
specialKeyPress(f, e, o) {
    if(e.getKey() == e.ENTER) {
        this.performSearch();
    }
},

这样做的另一个好处是,它默认适用于所有文本字段,而不必手动将其添加到每个文本字段。

于 2016-02-08T10:55:19.567 回答