2011-07-26 51 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