我正在使用 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/