2011-02-28 1 views
0

RichFaces 3.3.2 및 JSF 1.2를 사용 중입니다.richfaces 텍스트 및 텍스트 영역을 다시 렌더링 할 때 커서를 움직일 때 키보드 위아래 화살표 키를 사용할 수 없음

시나리오 : 내 응용 프로그램에서

사용자가 텍스트 필드에 텍스트 또는 우리가 적용 버튼을 활성화해야 텍스트 영역에 들어갑니다. 이를 위해 우리는 rekey 'onkeyup'이벤트를 사용하고 있습니다. 검증 오류 메세지를 지정하지 않고는 사용자가

JSF 페이지 코드 유효하지 않은 날짜를 입력 할 때 표시해야합니다

버튼 코드 적용
<h:inputText id="input" required="true" requiredMessage="Value cann't be null" 
value="#{client.Value}" validatorMessage="Value should be between 0 and   999999999999.99" valueChangeListener="#{myHandler.onChange}" maxlength="30"> 
    <f:validateDoubleRange minimum="0" maximum="999999999999.99"/> 
    <a4j:support event="onkeyup" eventsQueue="A4JQueue"   reRender="outputPanel_btn_save"></a4j:support> 

:

<a4j:outputPanel id="outputPanel_btn_save"> 
<a4j:commandButton value="#{msg.btn_Apply}" id="applyButton" reRender="outputPanel_btn_save" eventsQueue="A4JQueue" disabled="#{myHandler.isApplyButtonDisabled}" styleClass="button" action="#{myHandler.update}"> 
</a4j:commandButton> 
</a4j:outputPanel> 

myHandler.onChange에 대한 빈 코드를 백업을()

MyHandler { 
    public void onChange(ValueChangeEvent event) { 
    Iterator<FacesMessage> facesMessages = getFacesContext().getMessages(); 
    boolean isMessagePresent=false; 
    while(facesMessages.hasNext()){ 
     FacesMessage message = facesMessages.next(); 
     isMessagePresent=true; 
     break; 
    } 

if (event != null 
    && event.getNewValue() != event.getOldValue()&& !isMessagePresent) { 
     this.isApplyButtonDisabled = Boolean.FALSE; 
    } 
    if(isMessagePresent){ 
     this.isApplyButtonDisabled = Boolean.TRUE; 
    } 
} 


} 

문제점 : 사용자가 keyup 이벤트에서 텍스트를 입력하면 적용 버튼이 다시 렌더링됩니다. 키보드의 재배치로 인해 필드의 초점이 onKeyup 이벤트로 인해 화살표 키가 작동하지 않습니다. 사용자가 텍스트를 입력 할 때 JS를 사용하여 적용 버튼을 사용하려고했습니다. 하지만 JSF 유효성 검사가 실행되지 않고 유효성 검사 메시지가 표시되지 않습니다.

질문 : 아웃이 텍스트 필드/텍스트 영역에 초점을 잃어버린 또한 JSF 검증이 실행/표시되어야로 적용 버튼을 가능하게 할 수있는 방법을 제안 할 수 있습니다?

답변

0

a4j : support에서 focuc 속성을 사용해보십시오. Ajax 요청 후 구성 요소에 포커스를 설정할 수 있습니다.

관련 문제