按下输入在EXTJS中执行下一个按钮操作

时间:2012-09-06 07:35:40

标签: extjs

我在extjs中创建了向导。在表格中我有2个字段,我需要当用户填写最后一个文本字段时按 Enter 该操作应该在用户按下下一个按钮时执行。如何实现它

3 个答案:

答案 0 :(得分: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
            }
        }
    }
}

答案 1 :(得分: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();
            }
        }
    }
}

答案 2 :(得分: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();
    }
},

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