2012-05-08 37 views
8

tôi cần thực hiện yêu cầu ajax khi tôi nhấp "enter" trong trường inputText, không có trang làm mới. Đó là mã của tôi:JSF 2.0: yêu cầu ajax khi nhấn ENTER

<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> 

Và trong đậu Tôi có một phương pháp đơn giản:

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

Tất cả các tác phẩm, nhưng Nó làm mới trang !!! Tại sao ? Làm thế nào tôi có thể giải quyết nó ?

Trả lời

3

Hiện đã là một chủ đề bằng một câu hỏi bằng cách nào đó thích bạn How to handle the ENTER keypressed to trigger an onBlur() event?

tôi sẽ chỉ cần thay đổi

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

Nếu bạn sử dụng JQuery

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

Cùng một vấn đề. Tải lại trang !!!! – enfix

+1

đã giải quyết được sự cố của tôi. Tôi cần phải loại bỏ một sự kiện từ bộ lọc dataTable trên "nhập clic". đây là mã của tôi 'onkeydown =" PF ('organicGroupsTable'). filter(); return! (event.which === 13 || event.keyCode === 13); "' Cảm ơn bạn! – Uness

-1

Tôi nghĩ rằng bạn cần phải nhập render param, do đó, nó không hiển thị lại toàn bộ trang.

<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> 
Các vấn đề liên quan