2011-06-15 71 views
5

我正在開發一個Ruby On Rails 2.3.8應用程序,我想知道如何在用戶按下textarea中的ENTER鍵時提交remote_form_for表單。如何使用ENTER鍵提交AJAX表單,從textarea?

這裏是表單代碼:

<% remote_form_for :post, PostComment.new, :url => save_outside_comment_path(post_id), :html => { :method => :put} do |f| %> 
    <%= f.text_area :comment, :rows => 1, :id => "txtOutsideComment_#{post_id}", :class => "new-reply-text" %> 
    <% end %> 

這裏是jQuery的功能,做了提交,但不AJAX:

jQuery('.new-reply-text').keypress(function(e) { 
    if (e.keyCode == 13 && !e.shiftKey) { 
     e.preventDefault(); 
     this.form.submit(); 
    } 
}); 

我已經從我的控制器做網頁更新,請我不希望從這個jQuery函數中指定任何語法,如success:。我只是想讓它使用AJAX提交remote_form_for

回答

6

我想你是問如何做一個AJAX請求,而不是整頁提交。如果是這樣

jQuery('.new-reply-text').keypress(function(e) { 
    if (e.keyCode == 13 && !e.shiftKey) { 
    e.preventDefault(); 
    jQuery.ajax({ 
     url: "/my/URL", 
     data: jQuery(this).form.serialize(), 
     success: function(){}, 
     dataType: "json" 
    }); 
    } 
}); 

,如果你使用。獲得 http://api.jquery.com/jQuery.get/

或.POST http://api.jquery.com/jQuery.post/

這對阿賈克斯 http://api.jquery.com/jQuery.ajax/

我包裝可以保存幾個參數不是一個鐵軌的人,所以你需要更新第一個jQuery對象的類/ id,找到remote_form_for

+0

感謝您的回答。這樣做的問題是,一旦表單被提交,我已經從控制器的動作中進行了html替換。所以,我不希望(或者至少我從來沒有這樣做過)例如從jQuery指定成功事件。 Rails中有沒有其他方法可以做到這一點? – brianfalah 2011-06-15 14:29:12

+1

只是讓成功函數爲空 – jigfox 2011-06-15 20:21:00

+0

AJAX調用背後的想法是處理提交請求,而不重新加載整個頁面。在這種情況下,您將觸發處理提交的相同控制器操作,但它會被稱爲我的AJAX功能。然後,您將通過AJAX請求發回HTML,並在成功函數中動態替換表單(或區域)的內容。 – Brombomb 2011-06-15 20:31:26