避免在字段验证失败时调用 AJAX onsuccess

Avoid AJAX onsuccess call, when field validation fails

本文关键字:调用 AJAX onsuccess 失败 验证 字段      更新时间:2023-09-26

我正在我的网站上构建一个向导。像每个向导一样,它也有步骤。对于每个步骤,您可以前进或后退到上一步。我正在使用 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 函数。