2013-07-31 1 views
0

제출하기 전에 유효성을 검증하려는 양식이 있습니다.JQuery 제출을 중단하고 Ajax 유효성 검증을 실행 한 다음 양식을 제출하는 방법

나는 stackoverflow 다른 솔루션을 시도했지만 작동하도록 다음 코드가 없습니다.

모든 것이 정상이면 제출할 양식을받을 수 없습니다. jQuery를 기능을 제출

$('#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

바인딩은 논리적으로 true 또는 false를 반환

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

같은 요소 를 형성한다.

+0

preventDefault를 제거하고 async : false를 추가했습니다. 그런 다음 alert ("Text") 뒤에 return false를 추가하고 $ (this) .trigger ('submit')를 return true로 대체했습니다. 이제 알림 "Text!"가 나타납니다. 그러나 양식은 여전히 ​​제출됩니다. 경고 ("텍스트!") 전에 false로 돌아 왔지만 양식이 제출되고 경고가 표시되지 않습니다. – mend

관련 문제