【发布时间】:2015-01-13 16:20:05
【问题描述】:
我打算在我的网站上构建一个向导。像每个向导一样,它有步骤。对于每一步,您都可以前进或后退到上一步。我正在使用 ajax 处理步骤之间的导航。每个步骤都在一个 div 上定义。每个步骤都具有相同的类,以及一个指示步骤的唯一 ID。因此,为了导航,我定义了以下 js 函数,其参数是要显示的步骤的 id。
function navigateStepWizard(id) {
//hide all steps
$('.wizard-step').hide();
//show proper step
$(id).fadeIn("fast");
return false;
}
现在,我面临的问题是,在其中一个步骤中,我有几个字段必须在进行下一步之前进行验证。我已经为表单上的每个字段定义了验证器(Faces Validator Classes),这些字段在尝试进入下一步时正在执行,并返回适当的 Ok/Error 消息。我的问题是,当此字段不正确时,按钮会转到下一步。首先,我尝试使用始终执行 js 函数的oncomplete,因此我更改为onsuccess,认为当验证不正确时,ajax 回调不会执行onsuccess js 函数,但确实如此...这是我的按钮代码
<p:commandLink id="go-to-step-X"
actionListener="#{myBean.submitWizardInfo}"
onsuccess="navigateStepWizard('#wizard-step-X');"
process="@form, @([id$=wizzard])"
update="@form, @([id$=wizzard])">
Go to next step...
</p:commandLink>
当字段不正确时,有没有办法避免onsuccess AJAX 调用?感谢您的宝贵时间!
P.D:我正在使用 JSF 2.0 和 PrimeFaces 5.0。
【问题讨论】:
-
只做
onsuccess="if(args &amp;&amp; !args.validationFailed) {navigateStepWizard('#wizard-step-X');}",而不是采取繁琐的方式。
标签: javascript ajax validation jsf primefaces