我在extjs中创建了向导。在表格中我有2个字段,我需要当用户填写最后一个文本字段时按 Enter 该操作应该在用户按下下一个按钮时执行。如何实现它
答案 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();
}
},
这样做的另一个好处是,它默认适用于所有文本字段,而不必手动将其添加到每个文本字段。