如何在jquery中验证后提交表单

时间:2015-04-18 11:52:06

标签: javascript php jquery forms

我尝试在验证成功后提交表单,因此我运行以下代码,并且两个操作同时执行。我也尝试提交处理程序方法,但它只会出错。我的代码如下所示:

$("#request_form").validate({
    debug: false,
    onfocusout: function(element) {
        $(element).valid();
    },
    errorClass : 'has-error',
    rules: {
        Subject : "required",
        Screen: "required"
    },
    messages: {
        Subject : "Subject cannot be empty",
        Screen: "Screen  cannot be empty"
    },
    submitHandler: function(form) {
        form.submit();
    }
});



$("#request_form").on('submit',
              (function(e) 
               {
               $("#request_form").validate(); 
               $("#request_form").valid()
               {
                   alert("test");
                   var action = "Provide_Feedback";
                   var form = $('form')[0]; 
                   var formData = new FormData(form);

                   formData.append('action','Provide_Feedback');
                   e.preventDefault();

                   $.ajax({
                   url: "support_update.php", 
                   type: "POST",             
                   data: formData, 
                   contentType: false,      
                   cache: false,            
                   processData:false,        
                   success: function(data)   
                   {            
                       if (data == "200") {
                       alert("Your Request Sent.");
                       window.location = 'provide_feedback.php';
                       }
                       else {   
                       alert("There was an error occurred!");
                       }                 

                   }
                   });

               }
               }));

2 个答案:

答案 0 :(得分:0)

插件的submitHandler仅在表单有效时触发。你真的不需要你自己的处理程序。

将您的ajax放入submitHandler并删除form.submit()

form.submit()告诉浏览器通过默认进程发送表单,如果你想用ajax提交它,这显然不是你想要的。

考虑到你在ajax成功中使用javascript进行重定向,但是不清楚为什么你真的想在第一时间使用ajax

答案 1 :(得分:0)

内部提交处理程序删除form.submit();&返回像return 1;那样的numaral值,即

submitHandler: function(form) { return 1; }

$("#request_form").on('submit',(function(e)内部调用验证功能&检查返回值是否等于1&继续进行:

 $("#request_form").on('submit',(function(e) 
{
  if($("#request_form").validate()!=1)
  {
     return false;
  }
//Continue your code here 

希望这会有所帮助。