杀死Popover上的setTimeout

时间:2018-05-30 14:56:06

标签: javascript jquery popover

我有popover,用于提交反馈/问题。用户可以通过它提交反馈/问题。我有两种状态:

  1. 初始状态,显示文本框和提交按钮
  2. 成功状态,显示成功的大型复选框。
  3. 成功弹出窗口应在5秒内消失,因此我将setTimeout设置为5000,这会破坏成功并重新初始化弹出窗口到初始状态。

    用户可以回击触发控件以隐藏成功状态。如果用户这样做,它应隐藏/销毁成功状态并重新初始化弹出窗口。我处理了触发控制的click事件,并使用下面的代码检查popover是否可见。

    $('.questionIcon').data('bs.popover').tip().hasClass('in')
    

    如果popover可见hide / destroy并将其重新初始化为初始状态。这里的问题是成功弹出框中的setTimeout可能仍然存在。怎么能让我的popover强制忽略超时执行我的代码?来了解可以使用clearTimeout但是如何使用popover?

2 个答案:

答案 0 :(得分:0)

setTimeout()绑定到变量并将其传递给popover处理程序中的clearTimeout()

var myTimeout = window.setTimeout(function(){ doSomething(); },5000);
window.clearTimeout(myTimeout);

答案 1 :(得分:0)

当成功弹出时,您必须设置超时并将超时对象存储在变量中,

const timerObj = setTimeout(function(){closePopPver()},5000);

当用户点击触发控制回来隐藏成功状态时,在那个onclick你可以写,

onclick={function(){clearTimeout(timerObj)}}

编辑:另一种方法是在用户点击说reintialised = true时设置标记。然后在超时功能中,你可以检查这个标志,

setTimeout(function(){
  if(!reintialised) closePopPver()
},5000);