1

我需要对表单进行一些基本验证。表单数据分为 5 个选项卡,用户应该能够从任何选项卡提交表单。到目前为止,一切都很好。如果用户没有填写字段,或者输入了无效数据我想留在当前选项卡上,显示错误消息并取消选项卡切换。

我已经尝试了我能找到的各种事件。有谁知道这是否可能以及我如何实现它?如果可能的话,我宁愿将它保留在 javascript 中的客户端。

使用如下代码示例。

<rich:tabPanel selectedTab="Info" switchType="client" contentClass="hz-record-tabpanel" ontabchange="doTabChange();"  onbeforeitemchange="doTabChange();" onbeforetabchange="doTabChange();">
                <rich:tab name="Info" label="Tab Label" onlabelclick="doTabChange();">
                    <ui:include src="info.xhtml" />
                </rich:tab>
                <rich:tab name="Officers" label="Officers" onlabelclick="doTabChange();" ontableave="doTabChange();">
                    <ui:include src="officers.xhtml" />
                </rich:tab>
                <rich:tab name="CardServices" label="Card Services" onlabelclick="doTabChange();">
                    <ui:include src="cardservices.xhtml" />
                </rich:tab> 
                <rich:tab name="M2MLimits" label="M2M Limits" onlabelclick="doTabChange();">
                    <ui:include src="m2mlimits.xhtml" />
                </rich:tab> 
                <rich:tab name="AccountServices" label="Account Services" onlabelclick="doTabChange();">
                    <ui:include src="accountservices.xhtml" />
                </rich:tab>                 
            </rich:tabPanel>

有任何想法吗?

4

2 回答 2

1

我们最终转移到 Richfaces 4 (4.2),我成功地使用itemchangebeforeitemchange

事件。

这些事件触发了两次(还没有想出那个),所以您不希望处理程序代码中的任何内容过于密集。

如果beforeitemchange返回 false(两次),则选项卡面板不会切换。

我正在使用该itemchange事件来触发任何额外的 javascript 来格式化数据,并将焦点放在该选项卡上表单中的第一个输入字段上。

于 2012-03-14T01:57:45.943 回答
1

这是我在经过良好验证后用来关闭rich:modalPanel 的那种按钮:

<a4j:commandButton id="btnModify" value="Modifier" actionListener="#{editCityActions.onButtonModifyClick}" data="#{facesContext.maximumSeverity.ordinal ge 2}" oncomplete="if(event.data == false) { #{rich:component('frmEditCity')}.hide(); }" render="tblCities" />

我认为您可以使用 a4j:ajax 或类似的东西来应用事件!

于 2011-08-24T01:20:43.153 回答