:remote =>通过ajax加载的表单上的true / data-remote

时间:2012-11-07 15:27:01

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

在我的Rails应用程序中,我有一个使用jQuery加载方法通过Ajax加载的表单。

function load_sales_form(product_id) {
    $("#sales_form").load("<%= url_for(:action => :show_sales_form) %>"/ + product_id);
}

加载的表单有一个form_for标记,其中包含:remote =&gt; true 选项,它会将 data-remote =“true”属性添加到表单中。

但是,当用户单击“提交标记”按钮时,不会使用Ajax提交表单。如果表单以标准的非ajax方式加载,它可以正常工作,但是在文档准备好之后表单是通过ajax加载的,不是使用ajax提交的,它提交为标准表单。

从我到目前为止所研究的情况来看,这是因为rails.js文件(其中包含允许通过ajax提交数据远程表单的内容)不会将其功能应用于通过ajax加载的html内容。

是否可以强制rails.js文件将其功能应用于通过Ajax加载的内容?

1 个答案:

答案 0 :(得分:2)

这里的情况相同。我找到了解决方案。 不是动态加载,而是错误触发submit事件是我的原因。

我有 Bootstrap模式,并设置了data-targethref属性。这会导致.modal-body内的内容通过AJAX从href中指定的地址加载。

模态预先配备了保存按钮(在加载的表单之外),它会像这样调用提交。

$modal.find("form.loaded_form").get(0).submit(); // INCORRECT

前者只执行原始提交,但是:

$modal.find("form.loaded_form").trigger('submit'); // CORRECT

诀窍。