3

我想在用户提交表单之后但在他离开页面之前显示一条注释。

目前我正在使用这个(简化的示例代码):

$('form').submit(function(event) {
    $('.note').show();

    setTimeout(function() {                 
        $('form').unbind().submit();
    }, 2000);

    return false;
});

这有效,但似乎并不好。有没有其他方法,比如函数$.delayPropagation(2000);

PS:笔记覆盖全屏,在此期间用户将无法再次提交。

4

1 回答 1

4

这是延迟操作的适当方式。

您实际上可能希望首先取消绑定事件以停止多个调用(您当前有一个 2 秒的窗口,他们可以在其中再次提交)。

作为标准做法,您应该只运行一次 jQuery 选择器(使用临时变量来保存结果)。$前缀也是命名 jQuery 变量的另一个标准。这意味着下面的代码将分别支持一个页面上的多个表单。

$('form').submit(function(event) {
    var $form = $(this);
    $('.note').show();
    $form.unbind()
    setTimeout(function() {                 
        $form.submit();
    }, 2000);

    return false;
});

您必须return false立即避免阻止浏览器。

笔记:

  • 另一种方法是使用Ajax表单发布,然后延迟,然后转到新页面
  • setTimeout是最普遍的延迟代码执行的方法。

注意:我只是想ubiquitous在帖子中使用这个词:)

于 2014-11-05T12:35:11.690 回答