繁体   English   中英

jquery / ajax-单击后禁用任何形式的提交按钮3秒钟

[英]jquery/ajax - disable submit button on any form for 3 seconds upon click

我搜索了,没有发现任何可以解释我需要的东西。

我有一个网页脚本,到处都有数十种形式。 无论表单的ID,类或动作如何,单击任何表单上的提交后,我都需要禁用提交按钮3秒钟。

我发现以下代码:

$('#btn').click(function(){
    var btn = $(this);
    $.post('http://someurl.com',{delay: 3}).complete(function(){
btn.prop('disabled', false);
    });
btn.prop('disabled', true);

});

但这要求表单的ID为btn,并且似乎要求将该表单“发布”到某个页面。

有什么方法可以在不考虑所执行操作的情况下以所有形式实现此目的? 因此,如果它是注册表单,则禁用“加入”按钮3秒钟,如果它是评论表单,则它同样会在提交评论后禁用3秒钟的提交,....基本上,无论我想要什么形式或操作单击后禁用提交按钮3秒钟。

这有可能吗?

我尝试将“ #btn”的所有实例更改为“输入”,但这似乎不起作用。 我真的不是很擅长这些东西,但是似乎可以在别人的帮助下设法绊脚石。

我的问题与其他问题不重复的原因是,我特别声明“无论表单的ID,类或操作如何”。 在另一个问题上提出的解决方案没有专门解决此问题。 由于各种原因,在具有成百上千种形式的Web脚本上添加id,类或类似内容的可能性不高(它是一种社交网络脚本)。 我标记为正确的解决方案是不需要将任何属性添加到html元素的解决方案。

试试看。(伪代码,根据需要修改):

$('#mybutton').on('click', function() {
    $('[type="submit"]').prop('disabled', true);
    setTimeout(function() {
        $('[type="submit"]').prop('disabled', false);
    }, 3000); // 3 seconds 
});

为什么不只绑定一个单独的事件以延迟添加残疾人呢? 您仍然可以保留自己的点击逻辑以进行发布。 只需将以下代码分配给容器元素,甚至是主体,然后为您想要影响类.mybutton的所有按钮(或其他对象)赋值。

$('.container').on('click', '.mybutton', function(event) {
  setTimeout(function(){
    $(this).attr("disabled", false);
  }, 3000);
  $(this).attr("disabled", true);
});

如果希望残疾人根据每次呼叫的“完成”事件进行切换,则必须创建一个带有参数的原型函数,该函数可以分配给每个按钮。 上面虽然有3秒的延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM