2012-05-08 53 views
8

我需要做一個ajax請求,當我點擊inputText字段中的「enter」,而沒有刷新頁面。 這是我的代碼:JSF 2.0:按回車時的ajax請求

<h:form id="form-test"> 
    <p:growl id="messages" showDetail="true"/> 
    <p:inputText id="inputEnter" 
      onkeypress="if (event.keyCode == 13) {onchange(); return false; }" 
      value="#{bean.content}"> 
     <f:ajax event="change" listener="#{bean.save}" update="messages"/> 
    </p:inputText> 
</h:form> 

而且在豆我有一個簡單的方法:

public void save(AjaxBehaviorEvent event){ 
    ... 
} 

所有的作品,但它刷新頁面!爲什麼?我該如何解決它?

回答

3

已經有一個問題一個線程莫名其妙地喜歡你How to handle the ENTER keypressed to trigger an onBlur() event?

我只想改變

onkeypress="if (event.keyCode == 13) {e.preventDefault(); 
inputEnter.onchange(); return false; }" 

如果您使用JQuery

$('#form-test\\:inputEnter').onchange(); 
+0

同樣的問題。頁面重新加載!!!! – enfix

+1

解決了我的問題。我需要從「輸入clic」中的dataTable過濾器中刪除事件。這是我的代碼 'onkeydown =「PF('organicGroupsTable')。filter(); return!(event.which === 13 || event.keyCode === 13);」' 謝謝! – Uness

-1

我想你需要進入渲染param,所以它不會再呈現整個頁面。

<h:form id="form-test"> 
    <p:growl id="messages" showDetail="true"/> 
    <p:inputText id="inputEnter" 
      onkeypress="if (event.keyCode == 13) {onchange(); return false; }" 
      value="#{bean.content}"> 
     <f:ajax event="change" render="messages" listener="#{bean.save}" update="messages"/> 
    </p:inputText> 
</h:form>