2012-09-06 2 views
2

extjs에서 마법사를 만들었습니다. 양식에 2 필드가있는 경우 사용자가 마지막 텍스트 필드를 채울 때 필요합니다 을 입력하면 다음 버튼에서 사용자가 작업을 수행해야합니다. 그것을언론에서 EXTJS의 다음 버튼 동작 수행

답변

6
{ 
    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 
      } 
     } 
    } 
} 
+0

내가 더 정확한 버전에 대한 답변을 수정 다음과 같습니다. 'textfield.nextSibling() 핸들러(); ' 이 필드 옆에 서 아무것도 핸들러를 호출 할 것이다 (즉, 버튼) – fedd

1

을 달성하기 위해 또는 직접 함수의 이름을 정의 할 수있는 방법 : 당신의 버튼을 다음과 같이 생성 된 경우

:

{ 
    xtype:'textfield', 
    name:'whatever', 
    enableKeyEvents: true, 
    listeners: { 
     keypress : function(textfield,eventObject){ 
      if (eventObject.getCharCode() == Ext.EventObject.ENTER) { 
       me.onSearchClick(); 
      } 
     } 
    } 
} 
0
:

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

당신은이 작업을 수행 할 수 있습니다

내가 이걸 달성 한 방법은 위의 답과 다르다. 내 의견으로는 적절한 M VC 모델을 사용하는 것이 좋습니다. 내 컨트롤러 내에서

나는 (우리는 init 함수 내에서 할) 이벤트 정의에 다음 코드를 사용 :

'searhform가'폼의 컨트롤러에 정의 된 선택이다
'searchform textfield': { 
    specialkey: this.specialKeyPress 
}, 

. 그런 다음

이 아래처럼 보이는 처리하는 기능 :

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

이의 추가적인 장점은, 오히려 각 사람에게 수동으로 추가 할 필요없이 기본적으로 모든 텍스트 필드에서 작동한다는 것입니다 .