【发布时间】:2014-10-24 00:13:32
【问题描述】:
我正在努力在设定的时间段后自动关闭 Bootstrap 模式。
这是我用来在 4 秒内关闭模式的 js 代码:
setTimeout(function() { $('#myModal').modal('hide'); }, 4000);
两个基本问题:
(A) 当 html 页面(包含模态)加载时,模态超时似乎在模态显示之前运行。模式设置为在单击页面中的链接后显示。如果在页面加载时没有立即点击链接,则模式只会短暂出现然后立即关闭,因为基本上超时时间是在加载 html 页面时开始的,而不是在模态已显示。
(B) 如果用户第二次(或第 3 次、第 4 次等)单击链接以启动模态,则模态会正常显示,但 在该时间段后不会关闭。 它会一直保持打开状态,直到用户手动关闭它。
所以...这两个问题是:
(1) 如何让模态超时时间等到模态显示后再运行时钟。
(2) 如何在正确的超时功能仍然有效的情况下让模态显示第二次和第三次?
(以下链接中提出的答案看起来很有希望,但对我不起作用。也许它们不适用于 Bootstrap 3?How to automatically close the bootstrap modal dialog after a minute)
下面的代码看起来很有希望,但即使将“显示”更改为“显示.bs.modal”也无法正常工作。还是我把这段代码放错了地方?
var myModal = $('#myModal').on('shown', function () {
clearTimeout(myModal.data('hideInteval'))
var id = setTimeout(function(){
myModal.modal('hide');
});
myModal.data('hideInteval', id);
})
非常感谢您的任何建议!
【问题讨论】:
-
Bootstrap 3 中的模态事件现在带有后缀,因此您应该使用
shown.bs.modal而不是show,在您链接的答案上也有评论
标签: javascript twitter-bootstrap bootstrap-modal