2011-05-09 6 views
2

일부 입력이 필요한 양식이 있습니다. 모든 것은 복숭아입니다. 이 양식에서 jquery를 통해 입력 값을 가져 와서 숨겨진 값에 할당하려고합니다. 이렇게하려면 다음을 작성했습니다.jQuery를 사용하여 양식 제출시 preventDefault와의 재귀 문제

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     function preventDefault(e){ 
      e.preventDefault(); 
     } 

     jQuery('#rsvp-form').bind('submit', preventDefault); 
     jQuery('#rsvp-form').submit(function(e) { 
      var emailvalue = jQuery('#personemail\\[0\\]').val(); 
      jQuery('#person_email').val(emailvalue); 
      alert(jQuery("#person_email").val()); 
      jQuery('#rsvp-form').unbind('submit', preventDefault); 
      jQuery(this).trigger('submit'); 
     }); 
    }); 
</script> 

저는 바인딩 할 때 .preventDefault를 제출하면 내 값이 변경되지 않고 잘 제출됩니다. 문제는 값을 변경 한 후 양식을 제출하는 것입니다. 아무리 노력해도 무한 루프로 끝납니다. 내가 트리거 또는 .submit() 또는 그 라인을 따라 무언가를 제거하고 그냥 바인딩 해제와 함께 떠나면 아무 일도 일어나지 않습니다. 이 시점에서 종류의 난처한.

+1

왜 처음부터 preventDefault가 필요합니까? – Yisroel

+0

#person_email 필드가 숨겨져 있습니다. preventDefault는 제출을 중지하기 위해 필요하므로 양식의 다른 입력 (이 경우 personemail [0])에서 숨겨진 필드에 값을 할당 한 다음 양식을 제출하십시오. – Max

답변

3

아무 것도 필요하지 않습니다. 양식을 제출하기 전에 그 값을 설정하려면이 같은 쉽게 수행 할 수 있습니다

jQuery(function() { 
    jQuery('#rsvp-form').submit(function(e) { 
     var emailvalue = jQuery('#personemail\\[0\\]').val(); 
     jQuery('#person_email').val(emailvalue); 
    }); 
}); 
+0

당신 말이 맞아요. 나는 그것을 복잡하게 만들었다. 감사! – Max

2

당신은 오히려 jQuery를 이벤트를 트리거보다 기본 submit 메소드를 호출 할 필요가있다.

+0

감사합니다. 이것은 완벽하지만, 사냥꾼은 옳았다. 내 상황에서는 preventDefault를 걱정할 필요가 없다. 도움을 많이 주셔서 감사합니다, 나는 def. 트리거와 네이티브 메소드를 구분하는 것을 기억하십시오. – Max