javascript - jquery 表单验证在 ajax 提交期间不起作用

标签 javascript jquery ajax forms

我有一个包含两个字段的表单,我尝试使用 ajax 提交。我有jquery form validator插件,适用于所有其他形式。当我尝试 ajax 提交时,验证似乎不起作用。我使用的脚本是:

$("#add-edit-template").click( function(event)
    {
        var x;
        x = $('.sp-preview-inner').css('backgroundColor');
        if(x)
        {
        hexc(x);
        $('#addEditTemplateForm').append("<input type='hidden' name='templateColor' value='"+ color+"' />");
        }
        $("#addEditTemplateForm").submit(function(e)
        {
            e.preventDefault();$("div#divLoading").addClass('show');    
            var postData = $("#addEditTemplateForm").serializeArray();
            var formURL = $(this).attr("action");
            $.ajax(
             {
            url : formURL,
            type: "POST",
            data : postData,
            dataType : "html",
            success:function(htmlData) 
            {
            $('#ph_widgets').replaceWith(htmlData);
            $("#templateSuccess").show();
            $("#phButtons").show();
            $('#listWidgets').dataTable({"iDisplayLength" : 25, "aaSorting": []});
            initDraggabletable("#selectedWidgetTable");
            },
            error: function( xhr, status, errorThrown ) 
            {
                console.log( "Error: " + errorThrown );
                console.log( "Status: " + status );
                console.dir( xhr );
            },
            });
            $("div#divLoading").removeClass('show'); 
            e.preventDefault(); //STOP default action
        });
    });

我需要点击功能,因为我从 div 中获取值,这对我来说也是必需的。我尝试添加

 $.validate
    ({
    form : '#addEditTemplateForm'
    })

紧接着点击之后以及 ajax 调用之前,但是提交并没有被阻止,验证也没有阻止这一点。我在网上找到了很多解决方案,但没有任何对我有用。有什么办法可以解决这个问题...提前致谢

最佳答案

做这样的事情:

您的 onclick 函数:

$("#add-edit-template").click(function(event) {
  var x;
  x = $('.sp-preview-inner').css('backgroundColor');
  if (x) {
    hexc(x);
    $('#addEditTemplateForm').append("<input type='hidden' name='templateColor' value='" + color + "' />");
  }

  $("#addEditTemplateForm").submit(); // trigger submit
});

使用回调函数进行验证

$.validate({
  form : '#addEditTemplateForm',
  onSuccess : function($form) {
    // if your form is valid
    $("div#divLoading").addClass('show');
    var postData = $("#addEditTemplateForm").serializeArray();
    var formURL = $(this).attr("action");
    $.ajax({
      url: formURL,
      type: "POST",
      data: postData,
      dataType: "html",
      success: function(htmlData) {
        $('#ph_widgets').replaceWith(htmlData);
        $("#templateSuccess").show();
        $("#phButtons").show();
        $('#listWidgets').dataTable({
          "iDisplayLength": 25,
          "aaSorting": []
        });
        initDraggabletable("#selectedWidgetTable");
      },
      error: function(xhr, status, errorThrown) {
        console.log("Error: " + errorThrown);
        console.log("Status: " + status);
        console.dir(xhr);
      },
    }).always({
      $("div#divLoading").removeClass('show');
    });

    return false; // Will stop the submission of the form
  }
 })

可以看到很多回调here

关于javascript - jquery 表单验证在 ajax 提交期间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360705/

相关文章:

javascript - 如果它们的 id 匹配,如何将 div 附加到上一个 div (ANGULAR JS)

jquery - 如果使用 jQuery 选中复选框,如何禁用文本框?

javascript - 可拖动的 iFrame 注册点击而不是拖动

jquery - $.mobile.loadPage是否提供回调函数?

java - 我正在尝试使用 angularjs 将数据从 servlet 获取到 jsp 中。但是,ng-click 似乎不起作用。我究竟做错了什么?

javascript - 如何将模型字段传递给 View 中的 Javascript 函数?

Javascript/jQuery - 检测浏览器高度 - 简单修复?

javascript - 如何防止长按结束时发出点击声?

jQuery自动完成输入键问题

javascript - Php Mysql Ajax 插入多行