首先验证表单,然后执行 Ajax 调用

validate form first then do ajax call

本文关键字:执行 Ajax 调用 然后 验证 表单      更新时间:2023-09-26

我使用 jquery 验证插件来验证我的表单。但仍有一些字段需要自定义验证。

奇怪的是。提交时,它首先检查我的选择框验证,当这正常时,然后由于 $.validate() 而所有字段都变成红色;如果未填写任何内容,但仍会继续执行 ajax 调用......这是为什么呢?

我也使用这个插件:http://formvalidator.net/#configuration 我已经尝试了回调,但由于某种原因它仍然没有返回 false 并继续使用 ajax。

$( "#registration-form" ).submit(function( event ) {
event.preventDefault();
    $.validate();
    //Check dropdown
    if(document.getElementById('foodassoonas').selectedIndex == 0)
    {
    $('#dateerrormsg').html('not ok');
    $("#foodassoonas").css({"border":"1px solid red"});
    return false;
    }

    $.post(jssitebaseUrl+'/ajaxFile.php',{'contactemail':contactemail,'action':'checkOrderEmailId'}, function(output){
        alert(output);
        if(output == 'already' && contactpassword !=""){
            $("#createUserError").addClass('errClass1 margin0');
            $("#createUserError").html('not ok');
            $("#createUserError").show();
            return false;
        }else if(output == 'gotopayment' || (output == 'already' && contactpassword =="")){
            document.checkoutform.submit();
        }
        return false;
    });

return false;
});

试试这个

 $.validate({
        onError : function() {
      alert('Validation failed');
      return false;
    }
});

玩完它后,我通过这样做得到了它的工作:

>>>> REMOVED (PLACED ON BOTTOM) event.preventDefault();
$( "#registration-form" ).submit(function( event ) {
var flag = $.validate(); 
if(!flag) { 
    //Check dropdown
    if(document.getElementById('foodassoonas').selectedIndex == 0)
    {
    $('#dateerrormsg').html('U heeft geen bezorgtijd aangegeven');
    $("#foodassoonas").css({"border":"1px solid red"});
    return false;
    }

var contactemail = $('#contactemail').val();
$.post(jssitebaseUrl+'/ajaxFile.php',{'contactemail':contactemail,'action':'checkOrderEmailId'}, function(output){
    alert(output);
    if(output == 'already' && contactpassword !=""){
        $("#createUserError").addClass('errClass1 margin0');
        $("#createUserError").html('not ok');
        $("#createUserError").show();
        return false;
    }else if(output == 'gotopayment' || (output == 'already' && contactpassword =="")){
        document.checkoutform.submit();
    }
    return false;
});
return flag; 
}

>>>> REMOVED return false;
>>>> ADDED event.preventDefault();
});

只是现在阿贾克斯没有被解雇:(