【问题标题】:How to trigger a delayed jQuery event?如何触发延迟的 jQuery 事件?
【发布时间】:2011-07-01 17:03:07
【问题描述】:

我正在为 Web 表单编写解决方法。给定的问题是点击提交会弹出加载动画。内容已保存,但仍显示表单,加载动画也是如此。

这个想法是在提交点击后 2-3 秒触发一个事件,该事件将重置表单内容并隐藏加载动画。

您建议如何处理这个问题?

谢谢。

【问题讨论】:

  • 阅读 jQuery delay API:api.jquery.com/delay
  • 您是否使用 ajax 进行提交?为什么ajax返回时不执行代码?
  • 谢谢。我的目标是“hacky”解决方案;我需要以某种方式收听表单(因为我无法访问其逻辑)并在其过程完成后触发事件。

标签: javascript jquery forms delay


【解决方案1】:

使用事件中的回调函数将它们链接在一起 - 这样可以确保操作已完成,而不是尝试同时运行所有它们。如果您发布一些代码,我们可能会提供更多帮助。还有.delay() 函数,但我认为回调更合适,因为您的流程是事件驱动的,而不是时间驱动的。在过程中出现问题的情况下,您拥有更大的灵活性,而不是在单击后静态重置。

【讨论】:

  • 由于我无法控制表单及其行为,我应该使用回调 - 在哪里? - 在绑定点击事件中?类似 $('input').click(function(), callback) ?
  • @konzepz 这取决于您使用的功能 - 您可以发布代码吗?
  • 对不起,发布代码是行不通的。我正在为 WordPress 使用 Gravity Forms 插件。它工作得很好,唯一的缺点是 AJAX 还不支持。这就是为什么我试图编写一些覆盖代码来支持这种行为。
  • @konzepz 理解。在这种情况下,您可能必须使用delay()。不过,这绝对不是首选。
【解决方案2】:

你可以只使用 setTimeout(...) 来调用重置表单内容并隐藏动画的方法吗?见:http://www.w3schools.com/js/js_timing.asp

【讨论】:

    【解决方案3】:

    jQuery Form 来救援了。

    $('form#id').ajaxForm(function() {
        // do stuff
    });
    

    这将在表单提交后运行回调。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 2019-01-22
      • 1970-01-01
      • 2011-01-17
      • 2015-01-17
      • 2015-10-03
      相关资源
      最近更新 更多