在 Popover 上杀死 setTimeout
Kill setTimeout on Popover
我有用于提交的弹出窗口 feedback/question。用户可以通过它提交 feedback/questions。我有两种弹出窗口状态:
- 初始状态,显示文本框和提交按钮
- 成功状态,显示成功的大 fa-check-circle。
成功弹出窗口应在 5 秒内消失,因此我将 setTimeout 设置为 5000,这会破坏成功并将弹出窗口重新初始化为初始状态。
用户可能会点击触发控件返回以隐藏成功状态。如果用户这样做,它应该 hide/destroy 成功状态并重新初始化弹出窗口。我处理了触发控件的点击事件,并使用以下代码检查弹出窗口是否可见。
$('.questionIcon').data('bs.popover').tip().hasClass('in')
如果 popover 可见 hide/destroy 并将其重新初始化为初始状态。这里的问题是 setTimeout 可能仍然在 Success 弹出窗口上。如何让我的弹出窗口强制忽略超时执行我的代码?知道可以使用 clearTimeout 但如何使用 popover?
将 setTimeout()
绑定到变量并将其传递给弹出窗口处理程序中的 clearTimeout()
。
var myTimeout = window.setTimeout(function(){ doSomething(); },5000);
window.clearTimeout(myTimeout);
当成功弹出时,您必须设置超时并将超时对象存储在变量中,
const timerObj = setTimeout(function(){closePopPver()},5000);
并且当用户点击触发控件返回时隐藏成功状态,在那个onclick里面可以这样写,
onclick={function(){clearTimeout(timerObj)}}
编辑:另一种方法是在用户单击说 reintialised = true
时设置一个标志。然后在超时函数里面,你可以检查这个标志,
setTimeout(function(){
if(!reintialised) closePopPver()
},5000);
我有用于提交的弹出窗口 feedback/question。用户可以通过它提交 feedback/questions。我有两种弹出窗口状态:
- 初始状态,显示文本框和提交按钮
- 成功状态,显示成功的大 fa-check-circle。
成功弹出窗口应在 5 秒内消失,因此我将 setTimeout 设置为 5000,这会破坏成功并将弹出窗口重新初始化为初始状态。
用户可能会点击触发控件返回以隐藏成功状态。如果用户这样做,它应该 hide/destroy 成功状态并重新初始化弹出窗口。我处理了触发控件的点击事件,并使用以下代码检查弹出窗口是否可见。
$('.questionIcon').data('bs.popover').tip().hasClass('in')
如果 popover 可见 hide/destroy 并将其重新初始化为初始状态。这里的问题是 setTimeout 可能仍然在 Success 弹出窗口上。如何让我的弹出窗口强制忽略超时执行我的代码?知道可以使用 clearTimeout 但如何使用 popover?
将 setTimeout()
绑定到变量并将其传递给弹出窗口处理程序中的 clearTimeout()
。
var myTimeout = window.setTimeout(function(){ doSomething(); },5000);
window.clearTimeout(myTimeout);
当成功弹出时,您必须设置超时并将超时对象存储在变量中,
const timerObj = setTimeout(function(){closePopPver()},5000);
并且当用户点击触发控件返回时隐藏成功状态,在那个onclick里面可以这样写,
onclick={function(){clearTimeout(timerObj)}}
编辑:另一种方法是在用户单击说 reintialised = true
时设置一个标志。然后在超时函数里面,你可以检查这个标志,
setTimeout(function(){
if(!reintialised) closePopPver()
},5000);