【问题标题】:Submitting a rails remote_form with external submit button使用外部提交按钮提交 rails remote_form
【发布时间】:2010-03-03 21:00:38
【问题描述】:

我正在尝试使用表单标签之外的提交触发器提交 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 函数中。有什么想法吗?非常感谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

      • 我得到“onsubmit”不是firebug中的功能:-/
      • 在查看其他 StackOverflow 问题后,似乎不可能让 jquery 使用 onsubmit 触发表单。这很奇怪。是真的吗?
      • 实际上,我有点脑子有问题,忘了去 jQuery 引用。您应该可以通过: $('#new_item')[0].onsubmit() 其中 [0] 用于标识第一个匹配元素并返回实际的 DOM 对象。否则你只会得到 jQuery 包装器对象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 2011-06-29
      • 2013-08-06
      • 1970-01-01
      • 2011-05-06
      相关资源
      最近更新 更多