當我們在一些稍微復雜的業務時,可能會遇到需要多個表單form在同一個頁面的情況,但是提交一個表單以后不想頁面刷新或者跳轉,那么我們考慮到的就是Ajax提交表單,那么如何讓Jquery的validator插件也可以對異步提交的表單進行驗證呢?我們繼續往下看。
在這里,我就用網絡上的一個例子來說明好了。
下面是一個比較常見的jquery .ajax提交表單的寫法
- $("#submitButton").click(function(){
- //序列化表單
- var param = $("#leaveSave").serialize();
- $.ajax({
- url : "leaveSave.action",
- type : "post",
- dataType : "json",
- data: param,
- success : function(result) {
- if(result=='success') {
- location.href='allRequisitionList.action';
- } else if(result.startWith("error_")){
- $("#errorMessage").html(result.substring(6));
- } else {
- //返回的結果轉換成JSON數據
- var jsonObj = eval('('+result+')');
- startTime = $("#startdate").val();
- endTime = $("#enddate").val();
- hour = jsonObj.hour;
- reason = jsonObj.reason;
- replaceDom(startTime,endTime,hour,reason);
- }
- }
- });
- });
如果想用ajax提交表單,還想用jquery的validate進行驗證,那么可以這樣解決:表單還是正常編寫的表單內容,type還是submit類型,只不過在validate驗證通過后的方法中使用ajax提交表單
- $("#saveWorkExtra").validate({
- onsubmit:true,// 是否在提交是驗證
- onfocusout:false,// 是否在獲取焦點時驗證
- onkeyup :false,// 是否在敲擊鍵盤時驗證
- rules: {
- ....
- },
- messages:{
- ....
- },
- submitHandler: function(form) { //通過之后回調
- var param = $("#saveToWorkExtra").serialize();
- $.ajax({
- url : "workExtraChange.action",
- type : "post",
- dataType : "json",
- data: param,
- success : function(result) {
- if(result=='success') {
- location.href='allRequisitionList.action';
- } else {
- var jsonObj = eval('('+result+')');
- }
- }
- });
- },
- invalidHandler: function(form, validator) { //不通過回調
- return false;
- }
- });