Rails 3:如何通过javascript触发表单提交?

Wil*_*nes 11 javascript ruby-on-rails-3

我有一个表单,大部分只是作为普通表单提交,所以我不想在form_tag中设置:remote => true选项.

但是,在某些情况下,我希望能够在表单后面发布一个javascript函数,就好像它已经发布了:remote => true.我需要在javascript中做些什么来完成这个?

小智 33

我对此有点新意但是这里......

rails.js(至少jquery)定义以下函数来捕获和提交表单:

$('form').live('submit.rails', function(e) { ... });
Run Code Online (Sandbox Code Playgroud)

如果你使用以下它应该触发相同的功能(如果:远程=>真,那么它不会导致页面重新加载):

$("#<yourformid>").trigger("submit.rails");
Run Code Online (Sandbox Code Playgroud)

因此,如果您想在选择更改上提交表单,您可以将上面的触发器调用设置为select:s onchange我想象.


小智 5

我刚试过这个肯定有用,如果表单有remote => true,只需删除data-remote属性即可正常提交w/javascript即

$('input').click(function(){ $('#form').removeAttr('data-remote') });
Run Code Online (Sandbox Code Playgroud)

我猜相反的可能会工作,即如果表单没有remote => true就行了

$('input').click(function(){ $('#form').attr('data-remote',true)});
Run Code Online (Sandbox Code Playgroud)