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

当用户单击提交按钮时-如何等待1秒再使用Javascript激活它?,javascript,html,prestashop,Javascript,Html,Prestashop,我正在尝试集成一个API,它可以在用户每次单击提交按钮表单时工作。这是工作,除了API没有时间激活,因为我们直接重定向到另一个页面 所以,我在寻找一种方法,当用户点击按钮时,只有在1或2秒后才会出现重定向 我试过: submitButton.addEventListener("click", function() { submitButton.setAttribute("disabled", "disabled"); // Removes disabling after 2 secon

我正在尝试集成一个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网站,我没有这个功能的名称

如果你有任何想法… 谢谢大家!


附言:我在使用谷歌标签管理器,Jquery在上面不起作用

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

您需要停止click事件实际执行它应该执行的操作,而不仅仅是将按钮标记为禁用。因此,
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);
  });
})();

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

您需要停止click事件实际执行它应该执行的操作,而不仅仅是将按钮标记为禁用。因此,
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);
  });
})();

难道你不认为用户必须在完成API调用时被重定向吗?这是可能的吗?我是web开发的初学者,所以如果你有建议的话……我接受了:)你不认为用户在完成API调用时必须被重定向吗?这是可能的吗?我是一个网络开发的初学者,所以如果你有什么建议…我想:)我不知道这个函数…太好了,谢谢你!但是现在看起来表单没有正确重定向…它没有指示错误(密码丢失等),也没有在用户区域重定向用户/好的,我没有使用form.submit()事件,而是使用button.click()事件,它就工作了。再次感谢。:)@桑德拉,不客气!别忘了“接受”解决你问题的答案。我不知道这个函数…太好了,谢谢!但是现在看起来表单没有正确重定向…它没有指示错误(密码丢失等),也没有在用户区域重定向用户/好的,我没有使用form.submit()事件,而是使用button.click()事件,它就工作了。再次感谢。:)@桑德拉,不客气!别忘了“接受”解决你问题的答案。