2013-04-16 156 views
3

我有兩個輸入的形式,其中一個值取決於另一個。當用戶更改一個字段時,我需要重新計算值(這在setter方法中完成)並更新表單。更新後重點丟失

這是我的例子:

<h:form> 
<p:inputText id="price1" value="#{bean.price1}"}"> 
    <p:ajax event="blur" update="@this, price2"/> 
</p:inputText> 
<p:inputText id="price2" value="#{bean.price2}"> 
    <p:ajax event="blur" update="@this, price1"/> 
</p:inputText> 
</h:form> 

的問題是,經過更新焦點例如丟失如果用戶使用Tab鍵從price1移動到price2。

回答

0
$("#price2").focusout(function(){ 
    $("#price1").focus(); 
}); 
5

你可以試試這個:

<h:form id="fm"> 
    <script type="text/javascript"> 
     function test(){ 
      $(PrimeFaces.escapeClientId('fm:price2')).focus(); 
     } 
    </script> 
    <p:inputText id="price1" value="#{bean.price1}" > 
     <p:ajax event="blur" oncomplete="test();" update="@this, price2"    listener="#{bean.hand}"/> 
    </p:inputText> 
    <p:inputText widgetVar="xxx" id="price2" value="#{bean.price2}"> 
     <p:ajax event="blur" update="@this, price1"/> 
    </p:inputText> 
</h:form> 
0
  • 集widgetVar您的輸入
  • 對於p:AJAX,設置的onComplete =「PF( 'YOUR_WIDGET_VAR_NAME')jq.focus( );」
0

這是一個非常討厭的問題,它與JSF執行部分呈現的方式有關。它取代了重新渲染的整個元素,導致焦點丟失。

解決此問題的唯一方法是存儲焦點保留元素的tabIndex,並在更新DOM後再次設置焦點。

您可以在此博客文章JSF 2 AJAX focus issues中找到有關該解決方案的更多詳細信息。

+0

引用外部的帖子如果您在答案本身中創建了一個非常好的摘要,答案很好。如果這不可行,請說明(例如,如果摘要會變得非常複雜)。 – Kukeltje