Javascript JSF在ENTER键上调用backingbean方法和reRender组件
我有一个带有as搜索字段的数据表。我希望在按下ENTER键时调用支持bean上的方法,并重新呈现DataTable 到目前为止,我的方法只适用于IE6和IE7,而不适用于FF。这是输入文本: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:
<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>