2015-06-21 59 views
1

我需要让我的primefacesp:commandLink在用户按下enter键时提交h:form使用primefaces小部件输入表单

我尝试了解决方案建议here和其他几个地方。我也试过primefacesdefaultCommand。无论我尝试什么,浏览器似乎都注意到按钮按下了,但action未执行。

这些都是我的表单控件:

<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" /> 
+0

定义'没有运气',更明确什么不工作和调试,所以你得到为什么 – Kukeltje

+0

没有运气意味着表单没有提交。浏览器似乎注意到按钮按下,但操作未执行。我也在编辑这个问题来反映这一点。 – Eddy

+0

'onclick'是否被解雇? – QueryLars

回答

1

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

确保您的真实链接的ID是 “形式:srchbutton” 或将不管它是什么。 您可以使用开发人员工具或萤火虫找出它。

+0

很好,谢谢迪亚娜。 – Eddy

1

迪亚纳的解决方案是对的,但应该使用动作onkeyup而不是onkeypress

ENTER是一个动作事件,所以它不会被onkeypress捕捉到基本和元字符。 因此,您需要onkeydown(即使在下一页加载后ENTER仍然关闭时会导致问题)或onkeyup。