【问题标题】:validate form first then do ajax call首先验证表单,然后进行 ajax 调用
【发布时间】:2013-11-01 04:26:11
【问题描述】:

我正在使用 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;
});

【问题讨论】:

    标签: javascript jquery ajax validation


    【解决方案1】:

    试试这个

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

    【讨论】:

    • 如果我在方法之前添加返回,当单击提交所有附加到插件工作的表单时......但是 ajax 和自定义下拉验证不起作用......它只是在修复验证插件的所有字段后提交
    • 如果我设置了它,它首先会显示下拉错误。然后所有的验证输入都会变成红色的验证插件并提示错误。然后当点击确定时它会提示 ajax 并且仍然继续
    • 我也将其设置为彼此分开,单独的验证
    • 好的,如果我点击提交,它会显示验证模块的所有错误。然后我填写所有错误并再次单击提交。然后没有错误显示,但表格也不会继续。另外..下拉的自定义错误也没有显示...
    【解决方案2】:

    在玩过它之后,我这样做了:

    >>>> 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();
    });
    

    只是现在没有触发 ajax :(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 2011-07-11
      相关资源
      最近更新 更多