如何在rails3 ajax表单中使用jQuery submit方法两次

时间:2012-03-11 09:32:01

标签: javascript jquery ruby-on-rails-3

我想在Rails3输入Ajax表单的输入字段后立即传输数据,第二次以后不起作用。

documents.js.coffee

jQuery ->
  $("#document_form form input").change ->
    $("#btnbtn").submit

create.js.erb / update.js.erb

$("#document_form").replaceWith(
  "<%= escape_javascript(render(:partial => "form"))%>");

_form.html.haml

.container#document_form
  = form_for @document, :remote => true, :html => {class: "form-horizontal"} do |f|
    = f.collection_select(:document_status_id, DocumentStatus.all, :id, :name, {}, {class: "span2"})
    = f.text_field :document_unique_id, :disabled => :disabled, class: "span2"
    = f.fields_for :items do |builder|
      = render "item_fields", :f => builder
    = link_to_add_fields "Add", f, :items
    = f.submit 'Save', class: "btn btn-primary", id: "btnbtn"

documents_controller.rb

  def update
    @document = Document.find(params[:id])
    respond_to do |format|
      if @document.update_attributes(params[:document])
        format.html { render action: :edit }
        format.json { head :no_content }
        format.js
      else
        format.html { render action: :edit }
        format.json { render json: @document.errors, status: :unprocessable_entity }
      end
    end
  end

1 个答案:

答案 0 :(得分:0)

可能是您正在动态插入输入字段,如果是这种情况则使用事件委托,如

$("#document_form form").delegate("input","change",function(){
    $("#btnbtn").submit();
});

这样,将监听change事件以动态添加到DOM的输入元素

相关问题