2013-07-31 82 views
0

我有一個表單,我想在提交之前進行驗證。如何停止JQuery提交然後運行ajax驗證,然後提交表單

我已經嘗試了不同的解決方案從stackoverflow但沒有得到下面的代碼工作。

如果一切正常,我無法提交表單。

$('#form1').submit(function(e) { 
    e.preventDefault(); 
    var xxx = $('#xxx').val(); 
    var yyy = $('#yyy').val(); 
    var zzz = $('#zzz').val(); 
    var uuu = $('#uuu').val(); 
    var data_string = 'uuu=' + uuu; 
    if (zzz != '000000' && zzz != '') { 
     $.ajax({ 
      url: 'ajax.php', 
      type:'POST', 
      data: data_string, 
      dataType: 'json', 
      cache: false, 
      success: function(response){ 
       if (response == false) { 
        if (xxxl == '') { 
         alert("Text!"); 
        } 
        else if (yyy == '') { 
         alert("Text!"); 
        } 
        else { 
         $(this).trigger('submit'); 
        } 
       } 
      } 
     }); 
    } 
    else { 
     $(this).trigger('submit'); 
    } 
}); 

回答

1

好的我終於自己解決了這個問題。 我做了2個不同的功能。 1用於提交,另一個用於ajax。 下面是一個示例:

   $('#form1').submit(function(event) { 
       var xxx = $('#xxx').val(); 
       var yyy = $('#yyy').val(); 
       var zzz = $('#zzz').val(); 
       var uuu = $('#uuu').val(); 
       if (zzz != '000000' && zzz != '') { 
        validate_brutokaal(uuu, function(response) { 
         if (response === false) { 
          if (xxx == '') { 
           alert("Text!"); 
           event.preventDefault ? event.preventDefault() : event.returnValue = false; 
          } 
          else if (yyy == '') { 
           alert("Text!"); 
           event.preventDefault ? event.preventDefault() : event.returnValue = false; 
          } 
         } 
         else { 
          return true 
         } 
        }); 
       } 
       else { 
        return true; 
       } 
      }); 

      function validate_xxxyyy(uuu, callback) {     
       var data_string = 'uuu=' + uuu; 
       $.ajax({ 
        url: 'ajax.php', 
        type:'POST', 
        data: data_string, 
        dataType: 'json', 
        cache: false, 
        async: false, 
        success: function(response){ 
         callback(response); 
        } 
       }); 
      } 
0

綁定jQuery的提交功能,形成元素 像

$("#formId").submit(function(){ 
.... 
return true; 
}); 

邏輯返回true或false。

+0

我刪除了preventDefault並添加了async:false。然後我在alert(「Text」)後添加了return false,並用return true替換了$(this).trigger('submit')。現在我收到警報「文字!」但表單仍然提交。當我在alert(「Text!」)之前返回false時,表單只提交併且沒有提示。 – mend