如果用户执行单击,如何取消超时

时间:2014-10-10 03:26:29

标签: javascript jquery

如果没有执行任何其他点击事件,我想在10秒后显示一个弹出窗口。即我在10之后显示弹出窗口:

setTimeout( "jQuery('#rollup-page-Modal').modal('show');",10000 );

现在有一些弹出窗口会在点击后显示:

jQuery(".more-info").click(function(event){
    jQuery("#more-info-modal").modal('show');
    event.preventDefault();
});

jQuery(".call-now").click(function(event){
    jQuery("#request-callback-modal").modal('show');
    event.preventDefault();
});

jQuery(".popup-send-quote").click(function(){
    jQuery("#request-callback-modal").modal('hide');
    jQuery("#callback-thankyou-modal").modal('show');
});

现在我想,如果显示任何其他弹出窗口或执行任何其他点击事件,则不应显示第一个弹出窗口(将在10秒后显示)。

3 个答案:

答案 0 :(得分:2)

您应该将id的{​​{1}}存储在变量中,然后您可以使用window.clearTimeout()清除文档中发生单击时的超时:

timeout

答案 1 :(得分:1)

首先是超时代码:

var timeout = setTimeout( function () {
    jQuery('#rollup-page-Modal').modal('show');
},10000 );

现在它在var中你可以在代码的其他地方取消它:

jQuery(".more-info").click(function(event){
    clearTimeout(timeout);
    jQuery("#more-info-modal").modal('show');
    event.preventDefault();
});

jQuery(".call-now").click(function(event){
    clearTimeout(timeout);
    jQuery("#request-callback-modal").modal('show');
    event.preventDefault();
});

jQuery(".popup-send-quote").click(function(){
    clearTimeout(timeout);
    jQuery("#request-callback-modal").modal('hide');
    jQuery("#callback-thankyou-modal").modal('show');
});

答案 2 :(得分:1)

添加标志

var didClick = false;

jQuery(".more-info").click(function(event){
    jQuery("#more-info-modal").modal('show');
    event.preventDefault();
    didClick = true;
});

jQuery(".call-now").click(function(event){
    jQuery("#request-callback-modal").modal('show');
    event.preventDefault();
    didClick = true;
});

jQuery(".popup-send-quote").click(function(){
    jQuery("#request-callback-modal").modal('hide');
    jQuery("#callback-thankyou-modal").modal('show');
    didClick = true;
});

然后在超时之前将其设置为false

didClick = false;
setTimeout(function() {
    if (!didClick) {
        jQuery('#rollup-page-Modal').modal('show');
    }
},10000 );