1

I need to have my primefaces p:commandLink submit a h:form when the user presses the enter key.

I tried the solutions suggested here and in a couple of other places. I also tried the primefaces defaultCommand. No matter what I try, the browser seems to notice the button press, but the action is not performed.

These are my form's widgets:

<p:autoComplete id="acSimple" value="#{home.searchKeywords}" completeMethod="#{home.completeText}" style="" />
<p:commandLink id="srchbutton" action="#{home.goToSearchResults}" onclick=" $('.prgrs').show();">
    <h:graphicImage id="srch" name="images/searchbutton.jpg" class="img-responsive" style="display: inline-block; margin-left:0px; margin-bottom:-0px;"  />
</p:commandLink>
<p:defaultCommand target="srchbutton" />
Community
  • 1
  • 1
Eddy
  • 3,533
  • 13
  • 59
  • 89
  • Define 'no luck', be way more explicit what does not work and debug so you get to the why – Kukeltje Jun 21 '15 at 11:34
  • No luck means that the form is not submitted. The browser seems to notice the button press, but the action is not performed. I'm also editing the question to reflect that. – Eddy Jun 21 '15 at 11:53
  • No, onclick is not fired. – Eddy Jun 21 '15 at 12:04
  • Not submitted is still to vague. See e.g. the question by QueryLars. That is debugging – Kukeltje Jun 21 '15 at 12:05
  • I answered QueryLars's question. Like I said, it seems that the browser notices the 'enter' being pressed, but the action, namely 'home.goToSearchResults' isn't performed. – Eddy Jun 21 '15 at 12:13
  • You answered it most likely at the same time I was responding. Then remove the onclick and see if it makes a difference. Is the action called when you do a real click? Check network traffic, try different browsers etc… All kinds of things you can try and debug yourself. – Kukeltje Jun 21 '15 at 13:15
  • Yes, the action is performed when I do a real click. Removing the onclick doesn't solve it. Thanks :) – Eddy Jun 21 '15 at 13:22

2 Answers2

1

<h:form onkeypress="if (event.keyCode == 13) { document.getElementById('form:srchbutton').click(); return false; }">

Make sure your real id of link is "form:srchbutton" or put whatever it is. You can use developer tools or firebug to find it out.

Dijana Cukic
  • 196
  • 1
  • 9
1

Dijana's solution is right, but the action onkeyup should be used and not onkeypress.

ENTER is an action event so it will not be caught by onkeypress which captures basic and meta characters. So you need onkeydown (which can cause problems if ENTER is down even after the next page loads) or onkeyup.

Theofanis
  • 523
  • 5
  • 15