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

标签 javascript html prestashop

我正在尝试集成一个 API,每次用户单击提交按钮表单时该 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() 都将成为您的 friend 。这将阻止正常事件 Hook 触发。

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

关于javascript - 当用户单击提交按钮时 - 如何在使用 Javascript 激活它之前等待 1 秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48213137/

相关文章:

javascript - 组 isNaN() 代码压缩

javascript - 当我使用 javascript 动态创建 html 页面时,Jquery 脚本未加载到 head 中

javascript - 设置 contenteditable 元素的最大大小

html - 在网站中链接图像的正确方法是什么?

javascript - 无法在 PrestaShop 1.6 的脚本标签中添加数据属性

magento - 我应该使用 BlueSnap 管理我的产品目录吗

javascript - 如何从一个网址重定向到另一个网址?

javascript - 使用复选框删除行?

Prestashop - 现有 prestashop 模块中的覆盖功能

javascript - Jquery模态: on background click add class and remove html