10

i need to do an ajax request when i click "enter" in inputText field, without refresh page. That's my code:

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

And in bean I have a simple method:

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

All works, but It refresh page !!! Why ? How can I solve it ?

enfix
  • 6,680
  • 12
  • 55
  • 80

2 Answers2

4

There is already a thread with a question somehow like yours How to handle the ENTER keypressed to trigger an onBlur() event?

I would just change

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

If you use JQuery

$('#form-test\\:inputEnter').onchange();
Community
  • 1
  • 1
Oscar Castiblanco
  • 1,626
  • 14
  • 31
  • 1
    solved my problem. I needed to remove an event from dataTable's filter on "enter clic". this is my code `onkeydown="PF('organicGroupsTable').filter(); return !(event.which === 13 || event.keyCode === 13);"` Thank you ! – Uness Aug 10 '17 at 12:22
-1

I think you need to enter the render param , so it does not render the whole page again.

<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>
Astronaut
  • 6,691
  • 18
  • 61
  • 99