使用外部提交按钮提交rails remote_form

时间:2010-03-03 21:00:38

标签: jquery ruby-on-rails forms remote-forms

我正在尝试使用表单标记之外的提交触发器提交rails表单。所以我有我的表格:

<% remote_form_for Package.new, 
:url => { :action => :rate_shop, :ids_sales_order_id => params[:ids_sales_order_id],
:id => @shipment.id }, :loading => '$("#loading").overlay({api: true}).load(); ' + visual_effect(:appear, 'priceShopInProgress'), 
:complete => visual_effect(:fade, 'priceShopInProgress', :duration => 2), 
:update => 'itemSelection' do |f| %>

我有我的jQuery:

$('#priceSelectSubmit').click(function() {
  $('#new_item').submit();
});

我的触发器:

<%= submit_tag :Submit, :value => 'Select item', :id => 'priceSelectSubmit', :name => 'priceSelectSubmit' %>

这是交易。提交按钮正确地提交表单(并加载一个包含所有正确数据的新页面),但不会像按钮在表单标签内那样触发表单(特别是:加载东西非常重要)。我需要AJAX响应和加载叠加等等。

我的约束:

  • 必须使用带有Rails的jQuery
  • 提交按钮不能在表单中
  • 我不是这方面的主要程序员(他没有动作)所以我不知道是否只是对我的jquery进行简单的调整才能使表单正确启动,或者是否需要移动“动作” “填写表单标签并进入jquery函数。有什么想法吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

好的,所以我从重复的谷歌搜索中找到了它。感谢tadman让我走上了正确的道路!

$('form').trigger('onsubmit')

这就是jQuery允许您提交表单的方式,就像用户点击提交一样。

答案 1 :(得分:0)

您可以尝试使用onsubmit()调用:

$('#priceSelectSubmit').click(function() {
  $('#new_item')[0].onsubmit();
});

当您通过用户操作“提交”表单时会调用onsubmit函数,但是当您直接在表单上调用submit方法时,通常会绕过该函数。

如果您查看生成的实际HTML,您可以看到在onsubmit =“...”块中进行的Ajax调用。

编辑:修改为取消引用jQuery代理对象。