2011-08-05 18 views
1

私はJSFを使用しており、ページに2つの入力テキストがあります。a4j:supportを使用するとフォーカスが消えます

<h:inputText id="xxx" value="#{file.xxx}" maxlength="12" > 
    <a4j:support event="onchange" reRender="datePanel1" 
     onchange="validateXXX();" 
     oncomplete="process();" 
     /> 
</h:inputText> 

<h:inputText id="yyy" value="#{file.yyy}" maxlength="12" > 
    <a4j:support event="onchange" reRender="datePanel1" 
     onchange="validateYYY();" 
     oncomplete="process();" 
     /> 
</h:inputText> 

値が変更された場合、値のペアを検証する必要があります。検証に失敗すると、入力テキストの他の値を自動的に更新することができます。 Oncompleteイベントは、ページ上にステータスメッセージを出力するために使用され、削除することはできません。 問題は、最初の入力テキストから2番目の入力テキストにTABし、最初の入力テキストの「検証」後に2番目の入力テキストの値が変更され、フォーカスが2番目の入力テキストから消えてしまう場合です。どのように私はフォーカスが消えるのを防ぐことができますが、まだa4j:supportを使用していますか?

答えて

0

onCompleteの

例えば上にエレメントをリフォーカスするためにJavaScriptを使用してみてくださいonCompleteのハンドラが呼び出されたときにこれがうまくいけば、要素を再び焦点を合わせる必要があります

<h:inputText id="xxx" value="#{file.xxx}" maxlength="12" > 
    <a4j:support event="onchange" reRender="datePanel1" 
     onchange="validateXXX();" 
     oncomplete="process();document.getElementById('xxx').focus();" 
     /> 
</h:inputText> 

<h:inputText id="yyy" value="#{file.yyy}" maxlength="12" > 
    <a4j:support event="onchange" reRender="datePanel1" 
     onchange="validateYYY();" 
     oncomplete="process();document.getElementById('yyy').focus();" 
     /> 
</h:inputText> 

.....

関連する問題