2011-06-15 60 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