我有popover,用于提交反馈/问题。用户可以通过它提交反馈/问题。我有两种状态:
成功弹出窗口应在5秒内消失,因此我将setTimeout设置为5000,这会破坏成功并重新初始化弹出窗口到初始状态。
用户可以回击触发控件以隐藏成功状态。如果用户这样做,它应隐藏/销毁成功状态并重新初始化弹出窗口。我处理了触发控制的click事件,并使用下面的代码检查popover是否可见。
$('.questionIcon').data('bs.popover').tip().hasClass('in')
如果popover可见hide / destroy并将其重新初始化为初始状态。这里的问题是成功弹出框中的setTimeout可能仍然存在。怎么能让我的popover强制忽略超时执行我的代码?来了解可以使用clearTimeout但是如何使用popover?
答案 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);