Rails表单:单击后 - 禁用链接

时间:2011-06-27 15:22:13

标签: javascript ruby-on-rails forms

我在may rails应用程序中有更多表单,标有“保存”和“更新”按钮。首次点击此链接后如何使此按钮无效(禁用)?

4 个答案:

答案 0 :(得分:19)

您可以将disable_with选项与form_tag和form_for帮助一起使用 对于form_tag,您可以使用

submit_tag "Complete sale", :disable_with => "Please wait..."

对于form_for,您可以使用

   f.submit 'Create', :disable_with => "Creating..."

来源:http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag

答案 1 :(得分:2)

使用jquery可以让它变得非常简单

$('form').submit(function(){
$('input[type=submit]', this).attr('disabled', 'disabled');
});

以上查找所有表单,并在单击提交后禁用提交按钮。这是首选方法,因为输入按钮也会触发提交。

答案 2 :(得分:0)

如果你想用javascript做,那么为什么不使用事件委托?

$(document.body).delegate("form.active","click",function(){
    this.className = "clicked";
});

这会将click事件委托给页面中的每个表单并使用一个活动类(同样可以通过使用不同的上下文将其限制为容器中的每个表单,即$(“#container”)。委托(... )或省略活动类)并将类从活动更改为单击

$(document.body).delegate("form.clicked","submit",function(e){
    e.preventDefault();
});

这会将提交事件委托给页面上的每个表单,并且单击className并停止提交表单。

或者,您可以使用第一个委托函数将submit事件直接绑定到表单本身(因此请使用以下内容替换上述两个函数)。

$(document.body).delegate("form","click",function(){
    $(this).submit(function(e){
        e.preventDefault();
        e.stopPropagation();
    })
});

答案 3 :(得分:0)

这太晚了,但有一个我发现它很有用。

有些时候:disable_with在rails中不起作用。 为此,你要检查你的gemfile中是否添加了jquery-rails gem。

然后使用'data-disable-with' => "SUBMITTING"选项。