2011-07-26 116 views
0

我正在開發一個Ruby on Rails的2.3.8應用程序,我想知道如何提交remote_form_for當用戶按下文字區域內的ENTER鍵。 一旦表單被提交,我已經從控制器的動作中進行了html替換。如何使用ENTER鍵從textarea在Rails中提交AJAX表單?

這裏是我的代碼:

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

這裏是表單代碼:

<% remote_form_for :post, PostComment.new, :url => save_outside_comment_path(post_id), :html => {:method => :put, :onsubmit => save_outside_comment_path(post_id)} do |f| %> 
     <%= f.text_area :comment, :rows => 1, :id => "txtOutsideComment_#{post_id}", :class => "new-reply-text" %> 
     <%#= f.submit 'Publish', :onClick => "javascript:return validateField(this, #{PostComment::OUTSIDE_COMMENT_MIN_LENGTH}, #{PostComment::OUTSIDE_COMMENT_MAX_LENGTH});" %> 
<% end %> 

請幫幫我! 感謝您閱讀

+0

由於您使用的是單行text_area並且不能有效地禁用換行符,text_field是不是更合適? – dschooh

回答

2

在你的代碼,這是指向文本框,這樣就不會工作。試試這個

jQuery('.new-reply-text').keypress(function(e) { 
    if (e.keyCode == 13 && !e.shiftKey) { 
     e.preventDefault(); 
     var frm = $(this).closest("form"); 
     jQuery.ajax({ 
      url: frm.attr("action"), 
      data: frm.serialize(), 
      success: {}, 
      dataType: json 
     }); 
    } 
}); 
+0

非常感謝你,但它仍然無法正常工作,火狐扔給我「$(形式).getElementsByTagName不是一個函數」和IE:「對象不支持屬性或方法‘連載’」。 – brianfalah

+0

我的答案中缺少雙引號。我現在編輯它可以請你試試嗎? – ShankarSangoli