Javascript JSF在ENTER键上调用backingbean方法和reRender组件

Javascript JSF在ENTER键上调用backingbean方法和reRender组件,javascript,events,jsf,richfaces,Javascript,Events,Jsf,Richfaces,我有一个带有as搜索字段的数据表。我希望在按下ENTER键时调用支持bean上的方法,并重新呈现DataTable 到目前为止,我的方法只适用于IE6和IE7,而不适用于FF。这是输入文本: <h:inputText value="#{applicantProductListBean.applicantNameFilterValue}" id="applicantNameFilterValue" onkeypress="submitByEnter(event)"> </h:

我有一个带有as搜索字段的数据表。我希望在按下ENTER键时调用支持bean上的方法,并重新呈现DataTable

到目前为止,我的方法只适用于IE6和IE7,而不适用于FF。这是输入文本:

<h:inputText
 value="#{applicantProductListBean.applicantNameFilterValue}"
 id="applicantNameFilterValue" onkeypress="submitByEnter(event)">
</h:inputText>
如您所见,Javascript方法单击页面上的按钮refresh:

<a4j:commandButton value="Refresh" id="refreshButton"
 action="#{applicantProductListBean.refreshData}"
 image="/images/icons/refresh48x48.gif"
 reRender="table, scroller">
</a4j:commandButton>

尝试将JS块替换为:

function submitByEnter(e){
    if (e.keyCode == 13) {
        e.preventDefault();
        document.getElementById("applicantProductListForm:refreshButton").click();
    } 
}
或者更好

function submitByEnter(e){
    if (e.keyCode == 13) {
        document.getElementById("applicantProductListForm:refreshButton").click();
        return false;
    } else {
        return true;
    }
}
输入的
onkeypress

onkeypress="return submitByEnter(event)"

如果这不起作用,请运行的JS调试器,查看JS代码的行为是否符合预期。

以下方法对我有效:

<h:panelGrid onkeypress="searchByEnterAndReturn(event)">
    <b:aCustomComponent value="#{evolutionBackingAction.value}" id="someID"/>
</h:panelGrid>

<a4j:commandButton value="Search Now" action="search" id="searchButton"/>

<script type="text/javascript">
    function searchByEnterAndReturn(e){ 
        if(e.keyCode==13){
            document.getElementById("generalForm:pageHeader:searchButton").click(); 
        }  
     }
</script>

函数searchbyenter返回(e){
如果(e.keyCode==13){
document.getElementById(“generalForm:pageHeader:searchButton”)。单击();
}  
}
这是可行的,但要找到我的搜索按钮的ID,我必须搜索我页面的源代码,因为搜索按钮ID本身无法找到


我本可以在customComponent上执行此操作,但我可以控制此组件的源代码,并且onkeypress方法没有实现。

不客气。但是,它在(非常)旧的浏览器上不起作用。我做了一个更新(我检查preventDefault是否存在,并调用它或将returnValue设置为false)。我在IE6,IE7,FF中测试过。
onkeypress="return submitByEnter(event)"
<h:panelGrid onkeypress="searchByEnterAndReturn(event)">
    <b:aCustomComponent value="#{evolutionBackingAction.value}" id="someID"/>
</h:panelGrid>

<a4j:commandButton value="Search Now" action="search" id="searchButton"/>

<script type="text/javascript">
    function searchByEnterAndReturn(e){ 
        if(e.keyCode==13){
            document.getElementById("generalForm:pageHeader:searchButton").click(); 
        }  
     }
</script>