2013-07-31 86 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