Rails 4:单击后禁用提交按钮

时间:2014-02-16 14:06:54

标签: jquery ruby-on-rails ruby-on-rails-4 ujs

我有一个form_tag(foo_path(@foo), remote: true, id: 'foo-form'表单和一个提交按钮submit_tag ("Submit", :id => "foo-submit")

我想在点击后禁用提交按钮。显然,我不能使用类似onlick="jQuery(this).prop('disabled', true);"的东西,因为它会破坏远程功能。我知道submit_tag的:disable_with数据属性,但它似乎对我不起作用。它确实生成了正确的表单代码,但它没有任何效果。我不确定它为什么不起作用,但可能是因为我同时使用原型(遗留原因)和jquery。虽然,我只为jquery而不是原型加载ujs。但是,所有其他query_ujs功能都可以正常运行。

是否有另一种方法可以禁用提交按钮?

5 个答案:

答案 0 :(得分:47)

使用

submit_tag "Submit", id: "foo-submit", data: { disable_with: "Please wait..." }

答案 1 :(得分:11)

(function message() { var randomMsg = [ "string one", "string two", "string three", "string four", "string five" ]; var random = function() { return Math.floor((Math.random() * (randomMsg.length)) + 0); } var tmpMsg; var ranNumber = random(); var currentMsg = randomMsg[ranNumber]; tmpMsg = randomMsg.splice(ranNumber, 1)[0]; document.getElementById("intro").innerHTML = currentMsg; document.getElementById("intro").onclick = function() { ranNumber = random(); currentMsg = randomMsg[ranNumber]; document.getElementById("intro").innerHTML = currentMsg; randomMsg.push(tmpMsg); tmpMsg = randomMsg.splice(ranNumber, 1)[0]; if (randomMsg.length === 0) { randomMsg = tmpMsg; tmpMsg = []; } }; })(); 的替代方法是submit_tagbutton_tag允许您添加字体真棒微调器。

button_tag

答案 2 :(得分:2)

您可以使用CoffeeScript执行以下操作:

jQuery ->
  $('.theform').submit ->
    $('input:submit').attr("disabled", true)

这会在提交class="theform"的表单时禁用表单提交按钮。根据您的需要,您可以调整此选项以适合表单的类/ ID。

答案 3 :(得分:1)

问题是由无效的HTML代码引起的。见<div> breaks <form> disable_with现在正在使用

答案 4 :(得分:0)

由于它是一个ajax调用,因此将触发相应操作的结果js.erb文件。

禁用点击算法可以放在这个js.erb文件中。

# in the controller
def foo_method
...
# will render js.erb for ajax call 
# assuming there is no .html view file in the directory
end

# in foo_method.js.erb
$('input:submit').attr("disabled", true);

它会让你在禁用noew按钮

的同一页面上