2011-05-09 74 views
2

我有一個表單,需要一些投入,一切都有桃子。從這個表單我想要一個輸入值,並通過jQuery分配給一個隱藏的值。要做到這一點,我寫了以下內容:遞歸問題與preventDefault表單提交與jquery

<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 2011-05-09 16:43:22

+0

隱藏#person_email字段。需要preventDefault才能停止提交,這樣我就可以從窗體上的另一個輸入(在這種情況下命名爲personemail [0])爲隱藏字段賦值,然後提交表單。 – Max 2011-05-09 16:48:32

回答

3

你不應該需要任何。如果你想設置值的形式提交之前,你可以這樣做很容易像這樣:

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

你說得對。我讓它變得複雜起來。謝謝! – Max 2011-05-09 18:15:54

2

你需要調用本地方法submit,而不是觸發jQuery的事件。

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); 
    this.submit(); // <-- this line here 
}); 
+0

謝謝。這工作完美,但它會出現獵人是對的,我真的不需要打擾在我的情況preventDefault的東西。非常感謝幫助,但我會確定。記住觸發器和使用本地方法之間的區別。 – Max 2011-05-09 18:15:28