我正在我的网站上构建一个向导。像每个向导一样,它也有步骤。对于每个步骤,您可以前进或后退到上一步。我正在使用 ajax 处理步骤之间的导航。每个步骤都在div 上定义。每个步骤都有相同的类,以及指示步骤的唯一 id。因此,为了导航,我定义了以下js函数,其参数是要显示的步骤的id。
function navigateStepWizard(id) {
//hide all steps
$('.wizard-step').hide();
//show proper step
$(id).fadeIn("fast");
return false;
}
现在,我面临的问题是,在此步骤之一中,我有几个字段必须在进入下一步之前进行验证。我已经为表单上的每个字段定义了验证器(人脸验证器序列),这些字段在尝试进入下一步时正在执行,返回适当的 Ok/错误消息。我的问题是,当此字段不正确时,按钮确实会转到下一步。首先,我尝试使用始终执行 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回调,服务器必须使用200范围内的状态代码进行响应。如果验证有问题,请确保响应代码在 400 范围内。这样就不会调用 onSuccess 函数。