ruby-on-rails - 如何使用 RJS 模板临时禁用表单

标签 ruby-on-rails ruby ajax ruby-on-rails-3 callback

我正在使用 Ruby on Rails 3,我想使用 RJS 回调。我读自 here有以下回调::create, :uninitialized, :loading, :loaded, :interactive, :complete, :failure, :success, 但是如何使用它们

有人可以给我举个例子吗?或者发布一些有用资源的链接?

在我的例子中,我想禁用一个简单的表单在点击提交按钮后直到保存完成。表格是这样的:

<%= form_for(@account, :remote => true, :id => "form_id" ) do |f| %>
  <%= f.text_field :name, :html => { :id => "text_field_id" } ) %>
  <%= f.file_field :name, :html => { :id => "file_field_id" } ) %>
  <%= f.submit "Submit", :id => "button" %>
<% end %>

P.S.:我读到了文件 'RAILS_ROOT/public/javascripts(application.js' 但网上没有很好的文档。

最佳答案

您是否看过提交按钮的 :disable_with => 'Saving...' 代码?这正是为您尝试做的原因而创建的。这实际上所做的就是将数据属性“data-disable-with”添加到提交按钮。

如果您真的想禁用整个表单,您可以直接从 rails 中的 javascript 驱动程序获取逻辑并将其更改为禁用整个表单。

例如,jQuery 驱动程序的 disable-with 代码是

    /**
     * disable-with handlers
     */
    var disable_with_input_selector = 'input[data-disable-with]';
    var disable_with_form_selector = 'form[data-remote]:has(' + disable_with_input_selector + ')';

    $(disable_with_form_selector).live('ajax:before', function () {
        $(this).find(disable_with_input_selector).each(function () {
            var input = $(this);
            input.data('enable-with', input.val())
                 .attr('value', input.attr('data-disable-with'))
                 .attr('disabled', 'disabled');
        });
    });

    $(disable_with_form_selector).live('ajax:complete', function () {
        $(this).find(disable_with_input_selector).each(function () {
            var input = $(this);
            input.removeAttr('disabled')
                 .val(input.data('enable-with'));
        });
    });

关于ruby-on-rails - 如何使用 RJS 模板临时禁用表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893568/

相关文章:

javascript - 为什么这个 jquery 在 IE8 中不通过 AJAX 加载内容?

ruby-on-rails - 如何将字符串拆分为二维数组并将运算符应用于 Rails 3.2 中的数组元素?

javascript - 在 AngularJS 模板中使用 Rails 助手

ruby-on-rails - 在我的 Rails 应用程序中添加谷歌地图 - 需要帮助开始而不使用 Gem - 想编写自定义代码

ruby-on-rails - 使用 ajax 来回切换状态的 Ruby on Rails 按钮

PHP MYSQL,简单通知

ruby-on-rails - 工头立即终止

ruby-on-rails - Ruby on Rails : Insert value into database based on user input?

ruby-on-rails - Ruby on Rails 的 Limesurvey 替代方案?

ruby-on-rails - Rails 3 路由错误 - "No Route Matches"