jQuery验证后联系表单不会提交

Posted

技术标签:

【中文标题】jQuery验证后联系表单不会提交【英文标题】:Contact form won't submit after jQuery validation 【发布时间】:2017-06-06 02:23:42 【问题描述】:

我无法让我的表单在客户端验证并在此之后提交。问题可能出在代码的提交部分,因为如果我删除提交部分,验证部分就会起作用。任何人都可以帮助我吗? 这是我的代码:

var allowed_file_size = "5242880";
  var allowed_files = ['image/png', 'image/psd', 'image/jpeg', 'image/eps'];
  var border_color = "#036a96"; //initial input border color

  $("#contact_body").submit(function(e) 
    e.preventDefault(); //prevent default action 
    proceed = true;

    //simple input validation
    $($(this).find("input[data-required=true], textarea[data-required=true]")).each(function() 
      if (!$.trim($(this).val()))  //if this field is empty 
        $(this).css('border-color', 'red'); //change border color to red   
        proceed = false; //set do not proceed flag
      
      //check invalid email
      var email_reg = /^([\w-\.]+@([\w-]+\.)+[\w-]2,4)?$/;
      if ($(this).attr("type") == "email" && !email_reg.test($.trim($(this).val()))) 
        $(this).css('border-color', 'red'); //change border color to red   
        proceed = false; //set do not proceed flag              
      
    ).on("input", function()  //change border color to original
      $(this).css('border-color', border_color);
    );

    //check file size and type before upload, works in modern browsers
    if (window.File && window.FileReader && window.FileList && window.Blob) 
      var total_files_size = 0;
      $(this.elements['my-file'].files).each(function(i, ifile) 
        if (ifile.value !== "")  //continue only if file(s) are selected
          if (allowed_files.indexOf(ifile.type) === -1)  //check unsupported file
            $("#push").html(ifile.name + " nije dozvoljen tip fajla!");
            proceed = false;
          
          total_files_size = total_files_size + ifile.size; //add file size to total size
        
      );
      if (total_files_size > allowed_file_size) 
        $("#push").html("Maksimalna velicina fajla je 5 MB!");
        proceed = false;
      
    
    if (proceed) 
      var post_url = $(this).attr("action"); //get form action url
      var request_method = $(this).attr("method"); //get form GET/POST method
      var form_data = new FormData(this); //Creates new FormData object

      $.ajax( //ajax form submit
        url: post_url,
        type: request_method,
        data: form_data,
        dataType: "json",
        contentType: false,
        cache: false,
        processData: false
      ).done(function());
    
  );

【问题讨论】:

你介意提交一个 jsfiddle (jsfiddle.net) 吗? 这里是漏洞代码:gist.github.com/anonymous/b850b380b5062a8e7eca6ef0cf8e87e7@thedayturns 谢谢你的努力 【参考方案1】:

从您的代码中,在 $.ajax 函数调用中:

).done(function());

这是不正确的语法。该功能需要一个主体。应该是).done(function() );

【讨论】:

谢谢,但这仍然没有解决我的问题。我是新手,所以如果您需要更多信息来解决我的问题,请现在告诉我。再次感谢。【参考方案2】:

认为您可能缺少done 回调的函数体,这会导致语法错误。如果您打开了 DEV 控制台,会更容易发现。

).done(function());

应该是

).done(function()  );

【讨论】:

谢谢,但这仍然没有解决问题。我已经打开了 DEV 控制台,但没有任何关于我的问题。我需要提供更多信息吗?

以上是关于jQuery验证后联系表单不会提交的主要内容,如果未能解决你的问题,请参考以下文章

jQuery在使用ajax验证后提交表单

通过 jquery submit() 提交表单后的 Laravel 文件验证;

jquery+ajax验证不通过也提交表单问题处理

客户端验证后重力表单未提交

jQuery 验证 - 不表单提交

在 jquery 验证后提交表单 - 需要通过单击按钮来发布数据