我有一个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
功能都可以正常运行。
是否有另一种方法可以禁用提交按钮?
答案 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_tag
。 button_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按钮
的同一页面上