如何使用ENTER键从Rails中的textarea提交AJAX表单?

时间:2011-07-26 16:50:03

标签: ruby-on-rails ajax forms jquery

我正在开发一个Ruby On Rails 2.3.8应用程序,我想知道当用户在textarea中按ENTER键时如何提交remote_form_for。 提交表单后,我已经从控制器的操作中执行了html替换。

这是我的代码:

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 %>

请帮帮我! 感谢您阅读

1 个答案:

答案 0 :(得分: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
        });
    }
});