2017-05-31 62 views
1

我試圖調用一個函數來保存我的表單。jQuery驗證:在表單驗證後調用函數

這裏是我的代碼:

$('#save-form-datas').validate({ 
    rules: { 
     ROO_Number: { 
      required: true, 
      minlength: 1, 
      maxlength: 4 
     } 
    }, 
    submitHandler: function(form) { 
     var formData = new FormData(form); 
     saveFormDatas(form); 
    } 
}); 

但在執行代碼時它不工作。

這是我想的已經驗證後執行權函數的代碼:

function saveFormDatas(form) { 

    $.ajax({ 
     type : 'POST', 
     data : form.serialize(), 
     url : 'assets/app/php/ajax/rooms_edit.php', 
     success: function(responseText){ 
      var json = $.parseJSON(responseText); 
      if(json.type=="success") { 
       $('#status-message-saved.hide').removeClass('hide'); 

       if(json.return_url!="") { 
        setTimeout(function(){ window.location.href = "app?q=" + json.return_url; }, 1000); 
       } 
      } 
      if(json.type=="error") { 
       $('#status-message-error.hide').removeClass('hide'); 
      } 
     } 
    }); 
} 

但它不工作,只需打開一個新的網頁這樣我通過與形式$_GET(我的所有表單數據都在url中)。

我需要這樣做,因爲我有超過100個窗體,並且不能複製我的代碼來保存窗體。

感謝您的幫助。

回答

0

只需從驗證程序中刪除submitHandler並添加一個外部函數。

$('#save-form-datas').validate({ 
rules: { 
    ROO_Number: { 
     required: true, 
     minlength: 1, 
     maxlength: 4 
    } 
} 
}); 

處理表單提交如下。

$('#save-form-datas').submit(function(event){ 
    event.preventDefault(); 
    if($('#save-form-datas').valid()){ 
     var form = $('#save-form-datas')[0]; 
     var formData = new FormData(form); 
     saveFormDatas(form); 
    } 
}); 

否則你可以添加如下「返回false」 ......(這將防止默認提交表單)

$('#save-form-datas').validate({ 
rules: { 
    ROO_Number: { 
     required: true, 
     minlength: 1, 
     maxlength: 4 
    } 
}, 
submitHandler: function(form) { 
    var formData = new FormData(form); 
    saveFormDatas(form); 
    return false; 
} 
}); 
0

我曾在我的代碼以完成這件事

$('#save-form-datas').validate({ 
    rules: { 
     ROO_Number: { 
      required: true, 
      minlength: 1, 
      maxlength: 4 
     } 
    } 
}); 

在這裏你可以檢查的形式有效或無效

if($('#save-form-datas').valid()){ 
     function myfunction() 
} 

myfunction { 

$.ajax({ 
     type : 'POST', 
     data : $('#save-form-datas').serialize(), 
     url : 'assets/app/php/ajax/rooms_edit.php', 
     success: function(responseText){ 
      var json = $.parseJSON(responseText); 
      if(json.type=="success") { 
       $('#status-message-saved.hide').removeClass('hide'); 

       if(json.return_url!="") { 
        setTimeout(function(){ window.location.href = "app?q=" + json.return_url; }, 1000); 
       } 
      } 
      if(json.type=="error") { 
       $('#status-message-error.hide').removeClass('hide'); 
      } 
     } 
    }); 
} 

希望這有助於。