2014-07-21 2 views
1

내가 값은 페이팔 제출 양식을 가지고 ...jQuery를 제출()로 preventDefault() 제출 중하지 양식 후 제대로

내가 프로그래밍 변수를 확인하고 첫 번째 데이터베이스에 저장하고 싶었 페이팔을 제출하기 전에

이를 위해, 나는에 가지고 (제출) 기본 양식 동작을 차단하고, 사전 처리를 위해 처음으로 내 스크립트에 변수를 제출 코드 .. 다음

한 번에 OK, 나는 다음 제출을 호출 양식에 대한 함수.

결과 = 양식이 공백/제로 변수를 게시 중임

cleared_to_submit = 0; 
$("#my_form").on("submit", function(e){ 


    if(cleared_to_submit){ 
     cleared_to_submit = 0; 
     return; 
    }else{ 
     e.preventDefault(); 
     postvars = $(this).serializeArray(); 
     $(this).find(":input").prop("disabled",true); 


     url = "?act=pay_now&"; 
     $.post(url, postvars ,function(data){ 
      var stat = data.stat; 

      if(stat == 'ok'){ 
       cleared_to_submit = 1; 
       $("#my_form").submit(); //resubmit form 

      }else if(stat == 'input_error'){ 

       showAlert(statMsg, "danger"); 

       $("#my_form").find(":input").prop("disabled",false); 

      }else{ // ERROR 
       $("#my_form").find(":input").prop("disabled",false); 
       showAlert("Error:" + statMsg, "error"); 

      } 
     }); 
    } 




}); 

예상되는 부작용이 있습니까?

+0

및 게다가 페이지가 실제로 페이팔 페이지로 이동하지만 w/o 변수로 인해 실제로 작동한다는 것을 알고 있습니다. –

+0

newp, 그것은 (루트 변수)라고 직전 1 제출로 설정되어 cleared_to_submit' – BrownChiLD

답변

3

cleared_to_submit을 사용하는 대신 함수에서 수행해야 할 작업을 완료 한 후에 $(this).unbind("submit").submit();을 사용해보십시오.

기본적으로 말하고자하는 것은 .submit() 이벤트에서 양식의 유효성을 검사 한 후에이 코드를 사용하여 바인딩 한 .submit() 이벤트를 호출하지 않고 양식을 제출할 수 있습니다. 예를 들어

:

$("#my_form").on("submit", function(e){ 
    e.preventDefault();  
    //...validation here 
    if(stat == 'ok'){ 
     $(this).unbind("submit").submit(); // this line will not trigger the same submit event 
    } 
    //... 
}); 

나는이 문제를 해결할 것이라고 확신 아니지만, 그것은 당신에게 쉽게 형태를 확인하는 방법에 대한 아이디어를 제공 할 수 있습니다.

+0

tnx 아이디어 메이트에 대한 ..하지만 그것은 여전히 ​​같은 효과가 있습니다 .. preventDefault가 호출 된 후 프로그래밍 방식으로 submit을 호출하면 변수 게시를 망칠 것 같습니다 : ( – BrownChiLD

+0

($ (this)). –

+0

ok.cool.log ($ (this) .serializeArray()); 두 조건 모두 .. 첫 번째 실행 (게시물 이전)에서 변수가 있습니다 .. 그러나 on 두 번째 실행, 예상대로, console.log 아무것도 반환하지 않습니다. 이상한. – BrownChiLD

1

I 양식을 input 필드

$(this).find(":input").prop("disabled",true); 

을 비활성화 분명히 submit()를 호출하기 전에 폼 입력 필드 그래서, 비활성화 자신의 변수가있는 경우,이를 다시 활성화하지 않았다 때문입니다. 입력 양식을 사용할 수있는 경우 $.post 방법을 호출 한 후 $(this).find(":input").prop("disabled",true);을 넣어

0

시도는, POST 방식 변수가 비어 것이다

`는 항상 0