2011-08-02 84 views
1

我尝试了不同的组合来重新渲染结果面板。a4j rerender inputText onSubmit事件

它正常工作与

<h:form><a4j:region> 
<h:inputText value="#{myBean.keyword}"> 
<a4j:support event="onchange" reRender="results" eventsQueue="search" oncomplete="initResults();" /> 
</h:inputText> 
</a4j:region> 
</h:form> 

但我只想当按下Enter提交它。所以,我想

<h:form reRender="results" eventsQueue="search" oncomplete="initResults();"><a4j:region> 
<h:inputText value="#{myBean.keyword}"/> 
</a4j:region> 
</h:form> 

是返回一个空的结果,即使它不应该是空的,

<a4j:region> 
<h:form> 
<a4j:support event="onsubmit" reRender="results" eventsQueue="search" oncomplete="initResults();" /> 
<h:inputText value="#{myBean.keyword}"/> 
</h:form> 
</a4j:region> 

被重新加载整个页面,而不仅仅是结果面板(但结果(如图所示))。我甚至试图在最后一个例子中添加<h:form onSubmit="return false;">。 [编辑:确定返回false被AJAX支持电话覆盖]

如何使我的inputText字段重新输入时,按下“输入”。 (所以提交表格)但不想提交表格。

编辑:再次我的不好,我简化了这里的示例代码太多了。我有第二个元素与a4j:支持相同的形式,因为我删除了那里的a4j标记,并将onchange事件更改为表单提交,它也正在工作。

<h:selectOneMenu value="#{myBean.selectedMetaCategory}" onchange="this.form.submit();"> 
    <a4j:support ... 
    <f:selectItems value="#{myBean.metaSelectItems}"/> 
</h:selectOneMenu> 

回答

1

尝试这样的:

<a4j:region> 
<a4j:form onsubmit="reRenderResults();"> 
<h:inputText value="#{myBean.keyword}"/> 
</a4j:form> 
<a4j:jsFunction name="reRenderResults" reRender="results" eventsQueue="search" oncomplete="initResults();" /> 
</a4j:region> 
+0

做了一个不同的方式就像我写在上面编辑,而是因为我在我的问题缺少的信息,我标出你的答案是正确的。 – webstrap