当用户单击提交按钮时 - 如何在使用 Javascript 激活它之前等待 1 秒?

When a user click on a submit button - How to wait 1 second before activating it with Javascript?

我正在尝试集成一个 API,它在用户每次单击提交按钮表单时都能正常工作。这是有效的,除了 API 没有时间激活,因为我们被直接重定向到另一个页面。

所以,我正在寻找一种方法,当用户单击按钮时……只有 1 或 2 秒后才会出现重定向。

我试过了:

submitButton.addEventListener("click", function() {
  submitButton.setAttribute("disabled", "disabled");

  // Removes disabling after 2 seconds
  window.setTimeout(function() {
      submitButton.removeAttribute("disabled");
  }, 2000);
},false);

但是正如预期的那样,使用该功能,按钮根本不起作用。 从逻辑上讲,我应该在 setTimeout 函数中插入重定向或不重定向用户的函数。

问题是:这是一个来自客户的 prestashop 网站,我不知道这个函数的名称。

如果你有什么想法... 谢谢!

P.S:我正在使用 Google 跟踪代码管理器,但 Jquery 无法正常工作。

首先,无论您最终选择哪种解决方案,event.preventDefault() 都会成为您的朋友。这将阻止触发正常的事件挂钩。

您不仅需要将按钮标记为禁用,还需要阻止点击事件实际执行它应该执行的操作。因此,preventDefault().

以下代码将阻止点击的发生 按照这些思路应该可以工作:

(function(){
  // set flag to indicate whether we should wait or actually submit
  var delaySubmit = true;
  // get form el
  var form = document.getElementById('#YourFormId');
  form.addEventListener("submit", function(e) {

    // if we've already waited the 2 seconds, submit
    if( ! delaySubmit )
      return;

    // otherwise, stop the submission
    e.preventDefault();
    // set the flag for next time
    delaySubmit = false;

    // and resubmit in 2 seconds. 
    window.setTimeout(function() {
        this.submit();
    }, 2000);
  });
})();