Javascript 按enter键不会通过p:defaultCommand点击预期的搜索按钮

Javascript 按enter键不会通过p:defaultCommand点击预期的搜索按钮,javascript,jsf,jsf-2,primefaces,Javascript,Jsf,Jsf 2,Primefaces,我试图使用primefaces,但它并没有产生预期的结果。下面是我的代码片段 <h:form id="searchForm" styleClass="searchForm"> <p:panelGrid columns="3"> <p:commandButton id="left-overlay-btn" value="" styleClass="xschnapp-search-filter-menu" />

我试图使用primefaces,但它并没有产生预期的结果。下面是我的代码片段

<h:form id="searchForm" styleClass="searchForm">    
     <p:panelGrid columns="3">
         <p:commandButton id="left-overlay-btn" value="" styleClass="xschnapp-search-filter-menu" />
         <p:inputText required="true" placeholder="#{cc.attrs.searchTip}" value="#{cc.attrs.queryProperty}" />
         <p:commandButton value="&#160;" id="searchButton" action="#{cc.attrs.searchAction}" styleClass="xschnapp-search-action" />
     </p:panelGrid>
     <p:defaultCommand target="searchButton">
</h:form>

在上面的代码中,当我按下enter键时,它会点击第一列按钮,而不是预期的搜索,即使在使用primefaces p:defaultCommand之后也是如此

有人建议我使用javascript手动点击搜索按钮,这也是失败的。也许是因为我对javascript的了解不够。下面是javascript的代码片段,它也点击了第一列按钮,而不是所需的搜索按钮

<h:form id="searchForm" styleClass="searchForm" onkeypress="if (event.keyCode == 13) {document.getElementById('searchButton').click(); return false}">    
        <p:panelGrid columns="3">
            <p:commandButton id="left-overlay-btn" value="" styleClass="xschnapp-search-filter-menu" />
            <p:inputText required="true" placeholder="#{cc.attrs.searchTip}" value="#{cc.attrs.queryProperty}" />
            <p:commandButton value="&#160;" id="searchButton" action="#{cc.attrs.searchAction}" styleClass="xschnapp-search-action" />
        </p:panelGrid>
</h:form>


有人能帮我吗。

我在为我的企业网站定义全局热键时遇到了同样的问题。对我有效的方法是:

<h:form id="form">
    <p:hotkey bind="Enter" update="msg" actionListener="#{yourBean.yourSearchfunction}"/>
    <p:remoteCommand name="search" actionListener="#{yourBean.yourSearchfunction}" update="msg"/>
    //Your code
</h:form>
<h:outputScript>
$(':input').bind('keydown', 'Enter', function () {
    search();
    return false;
});
</h:outputScript>

//你的代码
$(':input').bind('keydown','Enter',函数(){
搜索();
返回false;
});
使用此代码,无论光标停留在何处,它都会在按enter键时启动搜索功能。也许您希望它更细粒度一些,然后您可以删除p:hotkey组件,以便仅在光标位于输入字段内时用于启动搜索功能


之所以需要javascript,是因为p:hotkey组件可以在任何地方工作,除非光标停留在输入字段中。因此,您将远程命令绑定到视图中每个输入字段内的enter事件。

为什么不改进原来的问题?嗨,Kukeltje,谢谢你的建议。下次我会记住的。所以要么去掉另一个,要么去掉这个。。。选择你的…其他删除。你知道为什么getDocumentById(表单:searchButton)显示为null吗?或者javascript调用中有什么错误?检查结果html中按钮的
id
:根据您提供的信息,它不是
form:searchButton
。我尝试了这种方法,但不起作用:(因为我只有searchButton的id。搜索操作已经通过复合元素与此按钮关联。