【问题标题】:Pressing enter does not hit the expected search button via p:defaultCommand [duplicate]按回车键不会通过 p:defaultCommand 点击预期的搜索按钮 [重复]
【发布时间】:2016-04-05 14:09:25
【问题描述】:

我正在尝试使用 primefaces,但它没有产生预期的结果。我的代码 sn-p 在下面

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

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

http://blog.primefaces.org/?p=1787

有人建议我使用 javascript 手动单击搜索按钮,这也失败了。也许是由于我的 JavaScript 知识薄弱。下面是带有 javascript 的代码 sn-p,它也点击了第一列按钮而不是所需的搜索按钮

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

谁能帮帮我。

【问题讨论】:

  • 你为什么不改进你原来的问题? stackoverflow.com/questions/36330347/…
  • 您好 Kukeltje,感谢您的建议。下次我会记住的。
  • 所以要么删除另一个,要么删除这个......任你选......
  • 其他已删除。任何想法,为什么 getDocumentById(form:searchButton) 显示 null ?或者 javascript 调用有什么问题?
  • 在生成的 html 中检查按钮的 id:根据您提供的内容,它不是 form:searchButton

标签: javascript jsf jsf-2 primefaces


【解决方案1】:

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

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

使用此代码,无论您的光标停留在哪里,它都会在按 Enter 时启动您的搜索功能。也许您希望它更细粒度,然后您可以删除 p:hotkey 组件,以便仅在光标位于输入字段内时用于启动搜索功能。

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

【讨论】:

  • 我尝试了这种方法,但它不起作用:(因为我只有 searchButton 的 id。搜索操作已经通过复合元素与此按钮相关联。
猜你喜欢
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多