2013-05-10 55 views
0

我有一个表单。我想用jquery验证插件来验证此表单。完成表单的验证后,我想通过ajax提交表单。我想通过它的id来验证表单的每个字段。 到目前为止,我已经做到了这一点:Jquery验证通过表单元素ID进行实时验证,并通过ajax提交表单

<form id="booking-form" name="booking-form" method="post" class="form-horizontal"> 
     <input type="text" id="firstname" value="" name="book[firstname]"> 
    <input type="text" id="email" value="" name="book[email]"> 
    <input type="text" id="contact" value="" name="book[contact]"> 
     <input type="submit" id="submit-booking" class="btn btn-primary btn-large" value="Book Now"/> 

在我的JavaScript函数:

$(document).ready(function() { 

     $("#booking-form").validate({ 
    rules: { 
     "book[firstname]": { 
      required: true 
     }, 
     "book[email]": { 
      required: true, 
      email: true 
     }, 
     "book[contact]": { 
      required: true 
     } 
    }, 
    submitHandler: function (form) { 

    alert("fff"); 
     var formData = $(form).serialize(); 
     //alert(formData); 


     $.ajax({ 
      url: "bs_client_function.php?action=new_b", 
      type: "post", 
      data: formData, 
      beforeSend: function() { 

      }, 
      success: function (data) { 

      } 
     }); 
     return false; 

    } 
}); 
     }); 

它没有work.No验证错误显示的形式,没有Ajax请求是sending.How我克服这个问题??
在此先感谢。

回答

2

你有一些严重的问题......

1)完全没有必要把.validate()点击处理程序内。它应该进入DOM就绪事件处理程序。为什么?因为.validate()是你如何初始化的插件,而不是测试表单的方法。插件在表单上初始化后,会自动完成测试。

2)当规则被内部.validate()声明的,它们只能通过场name分配,通过id而不是由jQuery选择。

3)你应该真的使用一个按钮,而不是一个链接。提交按钮由插件自动捕获。

4)您在第三个字段上拼写错误地为required

"#contact": {requred: true} 

工作演示:http://jsfiddle.net/P5tVp/

$(document).ready(function() { 

    $("#booking-form").validate({ 
     rules: { 
      "b[firstname]": { 
       required: true 
      }, 
      "b[email]": { 
       required: true, 
       email: true 
      }, 
      "book[contact]": { 
       required: true 
      } 
     }, 
     submitHandler: function (form) { 
      var formData = $(form).serialize(); 
      $.ajax({ 
       url: "bs_client_function.php?action=new_b", 
       type: "post", 
       data: formData, 
       beforeSend: function() { 

       }, 
       success: function (data) { 

       } 
      }); 
     } 
    }); 

}); 
+0

嗨斯帕克感谢你真棒answer.It工作在Fiddle.But我不不为什么它不在我的工作code.I已经更新我的代码above.Please看看。它直接提交我的表单没有ajax请求发送到这里,并没有错误验证工程。 – 2013-05-10 17:28:22

+0

是否有任何问题jquery 1.7.1.min在这里???我在这里使用jquery 1.7.1。 – 2013-05-10 17:33:54

+0

嗨,斯帕克,它的工作:)。我有一个jQuery插件版本的问题。我已经更新,现在它的工作正常。 – 2013-05-10 19:01:24

相关问题