Javascript jquery/ajax-单击后在任何表单上禁用提交按钮3秒钟
我找了又找,找不到任何能解释我需要什么的东西 我有一个webscript,它有很多表单。在任何表单上单击submit后,无论表单的id、类或操作如何,我都需要禁用submit按钮3秒钟 我找到了以下代码:Javascript jquery/ajax-单击后在任何表单上禁用提交按钮3秒钟,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我找了又找,找不到任何能解释我需要什么的东西 我有一个webscript,它有很多表单。在任何表单上单击submit后,无论表单的id、类或操作如何,我都需要禁用submit按钮3秒钟 我找到了以下代码: $('#btn').click(function(){ var btn = $(this); $.post('http://someurl.com',{delay: 3}).complete(function(){ btn.prop('disabled', false);
$('#btn').click(function(){
var btn = $(this);
$.post('http://someurl.com',{delay: 3}).complete(function(){
btn.prop('disabled', false);
});
btn.prop('disabled', true);
});
但这要求表单具有btn id,并且似乎要求表单“发布”到某个页面
是否有一种方法可以在所有形式上实现这一点,而不受正在执行的操作的限制?因此,如果它是一个注册表单,它会禁用“加入”按钮3秒钟,如果它是一个评论表单,它同样会在提交评论后禁用提交3秒钟。。。。基本上,无论什么形式或行动,我想禁用提交按钮3秒后点击
这可能吗
我已尝试将“#btn”的所有实例更改为“input”,但这似乎不起作用。我真的不擅长这方面的工作,但在别人的帮助下,我似乎能处理一些事情
我的问题之所以不是其他问题的重复,是因为我明确指出“无论形式的id、类别或行为如何”。关于另一个问题提出的解决办法没有具体解决这一问题。由于各种原因,在拥有成百上千个表单的webscript上添加id、类或类似的东西并非遥不可及(这是一个社交网络脚本)。我标记为正确的解决方案是不需要向html元素添加任何属性的解决方案 试试这个。(伪代码,根据需要修改):
试试这个。(伪代码,根据需要修改):
为什么不绑定一个单独的事件来延迟添加残疾人呢?你仍然可以保留你自己的点击逻辑。只需将下面的代码分配给容器元素,甚至是主体,并给出您想要影响class.mybutton(或其他内容)的所有按钮
如果您希望禁用按钮根据每个调用的“完成”事件进行切换,则必须创建一个带有参数的原型函数,该参数可以分配给每个按钮。但是上面的延迟为3秒。为什么不绑定一个单独的事件来添加延迟的残疾人?你仍然可以保留你自己的点击逻辑。只需将下面的代码分配给容器元素,甚至是主体,并给出您想要影响class.mybutton(或其他内容)的所有按钮
如果您希望禁用按钮根据每个调用的“完成”事件进行切换,则必须创建一个带有参数的原型函数,该参数可以分配给每个按钮。但是上面的内容有3秒的延迟。这篇文章重复:我解释了为什么现在不是重复的:)这篇文章重复:我解释了为什么现在不是重复的:)我只想提一下,这会阻止我表单上的任何提交功能,直到我在禁用时添加了
setTimeout
的1ms
还有按钮。我想说的是,在禁用按钮时添加了setTimeout
的1ms
之前,这会阻止表单上的任何提交功能。
$('#mybutton').on('click', function() {
$('[type="submit"]').prop('disabled', true);
setTimeout(function() {
$('[type="submit"]').prop('disabled', false);
}, 3000); // 3 seconds
});
$('.container').on('click', '.mybutton', function(event) {
setTimeout(function(){
$(this).attr("disabled", false);
}, 3000);
$(this).attr("disabled", true);
});