2012-06-22 2 views
0

PHere가 발생해야하는 상황입니다. 버튼 클릭시양식 제출 계속 루프 반복

버튼 클릭시 제출이 비활성화됩니다. 텍스트 스왑이 실행됩니다. 텍스트 스왑이 완료되면 cancel의 var는 false로 전환 한 다음 양식을 제출합니다.

form.submit()이 실행되면 루프가 발생하고 텍스트가 계속해서 페이드 인 및 페이드 아웃됩니다. 또한 양식을 제출하지 않습니다.

<script type="text/javascript"> 
    var cancel = true; 

    $("#btn-submit").click(

    function() { 
     if (cancel == true) { 
      $('form').on('submit', function (ev) { 
       ev.preventDefault(); 
       form = $(".submit-form"); 
       fp = $('#free-planner'); 
       fp.fadeOut(350, function() { 
        fp.text('Check your email!'); 
       }); 
       fp.fadeIn(350, function() { 
        cancel = false; 
        if (cancel == false) { 
         form.submit(); 
        } 
       }); 
      }); 

     } 
    }); 
</script> 
+1

기본 동작 ('submit')을 취소하면 양식을 제출할 수 있습니까?) – raina77ow

+0

'form.submit()'에서 목표로 보이는 @ raina77ow. 그러면 사용자가 원하는 제출 논리를 먼저 적용한 후 양식이 제출됩니다. – RobB

답변

1

취소 변수를 false로 설정하여 반복문을 생성 한 다음 false로 표시되면 양식을 제출하십시오.

는 다음과 같은 시도 :

var cancel = true; 

$("#btn-submit").click(function() { 
    if (cancel == true) { 
     form = $(".submit-form"); 
     fp = $('#free-planner'); 
     fp.fadeOut(350, function() { 
      fp.text('Check your email!'); 
     }); 
     fp.fadeIn(350, function() {          
      if (cancel == true) { 
       cancel = false;   
       form.submit();      
      }     
     }); 
    } 
}); 

이 변수가 사실 원래 상태의에서 수정되지 않은 취소 여부를 확인하기 위해 약간 논리를 수정 한 후 거짓으로 상태를 수정 한 다음 양식을 제출합니다. 이 양식은 한 번만 제출됩니다. 또한

, btn-submit은 제출 버튼 다음이 변화를 만드는 것은 당신이 자체가 역할을하기위한 것입니다 버튼으로 태그의 onsubmit 이벤트에 리스너를 추가 할 필요가 없습니다 것을 의미 submit 대신 button에 입력 유형을 변경하는 경우 제출 이벤트 또한 form.submit()으로 트리거 될 때까지 이벤트가 발생하지 않으므로 이벤트에 preventDefault()을 호출 할 필요가 없습니다.

+0

나는 이것이 옳은 길 Rob라고 믿는다, btn-submit은 제출 버튼이다. 내가 제안하는 방식으로 onSubmit 이벤트를 수정하는 방법을 잘 모르겠습니다. onSubmit은 현재 설정되지 않았습니다. – JakePump

+0

메서드를 사용하면 반복 문제가 해결되지만 양식은 여전히 ​​제출되지 않습니다. preventDefault()를 제거하면 함수가 실행되기 전에 양식이 자동으로 제출됩니다. – JakePump

+0

@JakePump - preventDefault()를 제거하는 것은 그것의 한 부분 일뿐입니다. 추가 부분은 onSubmit() [$ ('form'). on ('submit', function (ev) {})에 대한 이벤트 리스너를 제거하고 가능한 경우 입력 유형을'submit'에서'button'으로 수정하는 것입니다. 제공된 코드의 전체 부분을 포함하도록 스 니펫을 업데이트했습니다. – RobB