【发布时间】:2011-01-20 00:52:29
【问题描述】:
我有一个带有搜索字段的数据表。我希望在按下 ENTER 键时调用支持 bean 上的方法,以及重新渲染 DataTable。
到目前为止,我的方法仅适用于 IE 6 和 7,不适用于 FF。这是输入文本:
<h:inputText
value="#{applicantProductListBean.applicantNameFilterValue}"
id="applicantNameFilterValue" onkeypress="submitByEnter(event)">
</h:inputText>
这是我调用的 Javascript 方法:
function submitByEnter(e){
if(e.keyCode==13){
// alert("Enter was pressed");
e.returnValue=false;
e.cancel=true;
document.getElementById("applicantProductListForm:refreshButton").click();
}
}
可以看到,Javascript方法点击按钮刷新,页面存在:
<a4j:commandButton value="Refresh" id="refreshButton"
action="#{applicantProductListBean.refreshData}"
image="/images/icons/refresh48x48.gif"
reRender="table, scroller">
</a4j:commandButton>
refreshData 方法不返回任何内容。如前所述,这只适用于 IE 6 和 IE 7。
有谁知道为什么它在 FF 中不起作用?
我正在考虑的一个替代方案是 HotKey,它确实可以捕获 ENTER 事件,但它只能调用 Javascript,因此不合适。
是通过 RichFaces 还是纯 JSF 执行此操作的正确方法?
干杯!
更新:
稍微修改了BalusC的答案,有效的脚本是:
if (event.preventDefault) {
// Firefox
event.preventDefault();
} else {
// IE
event.returnValue = false;
}
【问题讨论】:
标签: javascript events jsf richfaces