成功之后的form_tag Rails 3

时间:2012-03-21 18:06:32

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

我正在使用form_tag

<%= form_tag url_for(:action=>'url'), :onclick=> "$('.submit_btn').addClass('disabled');", :complete=>$(".submit_btn").removeClass("disabled"), :method=>"post", :remote =>true do %>
...........

...............

<%= submit_tag "Create", :class=>"submit_btn", :disable_with => "Please wait..." %>

在提交表单时,onclick禁用了该按钮,这是正确的。但是,一旦我得到响应,它就不会从提交按钮中删除“禁用”类。我看了网上和API文档......但是没有找到让这个工作的方法。
我希望当表单提交数据时禁用按钮并且响应启用按钮。

任何人都可以提供指针吗?

由于 病毒

1 个答案:

答案 0 :(得分:1)

假设您正在使用jquery-ujs,则无需手动执行此操作,这意味着您应删除:onclick:complete部分 - 简单添加:disable_with和jquery -ujs会为你做剩下的事。

所以你的代码将成为:

<%= form_tag url_for(:action=>'url'), :method=>"post", :remote =>true do %>
<%= submit_tag "Create", :class=>"submit_btn", :disable_with => "Please wait..." %>

编辑:

如果要在此AJAX请求之前/期间/之后执行某些自定义操作,则将表单绑定到jquery-ujs(reference here)触发的自定义事件。例如,以下代码可以实现您的目的:

<script>
  $('#form-id').bind({
    'ajax:before': function () {
      $('.submit_btn').addClass('disabled');
    },

    'ajax:complete': function () {
      $('.submit_btn').removeClass('disabled');
    }
  });
</script>