2

我正在尝试使用表单标签之外的提交触发器提交 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' %>

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

我的禁忌:

  • 必须在 Rails 中使用 jQuery
  • 提交按钮不能在表单内
  • 我不是这方面的主要程序员(他没有行动 atm)所以我不知道这是否只是我的 jquery 的一个简单调整以使表单正确触发,或者是否需要将“动作”内容移出的表单标签和一个 jquery 函数。有什么想法吗?非常感激!
4

2 回答 2

2

好的,所以我从反复谷歌搜索中弄清楚了。感谢 tadman 让我走上正确的道路!

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

这就是 jQuery 如何让您像用户单击提交一样提交表单。

于 2010-03-03T22:00:51.813 回答
0

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

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

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

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

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

于 2010-03-03T21:11:14.723 回答