【问题标题】:How do I add a callback function to .submit() in Javascript?如何在 Javascript 中向 .submit() 添加回调函数?
【发布时间】:2023-03-07 20:18:01
【问题描述】:

我正在提交一个页面 onclick 表单元素,并且需要在提交刷新页面后运行一个函数。我正在尝试将动画滚动添加回导致提交的单击元素。我已经覆盖了滚动部分,但我似乎可以弄清楚如何使我为滚动编写的函数在提交页面刷新后运行。

任何及时的帮助将不胜感激!

【问题讨论】:

  • 您使用的是哪个服务器平台?

标签: javascript jquery function callback


【解决方案1】:

如果您正在执行完整提交,而不是 AJAX 提交,那么之后显示的页面与提交表单的页面不同。因此,被点击元素的身份将不会在第二页上显示。

您需要做的是,在提交处理程序期间,将被点击元素的身份(应该可能是某种唯一 ID)存储在表单的隐藏字段中。

当页面刷新时,它现在应该有可用的唯一 ID(可能由服务器端代码放置在表单的相同隐藏字段中),并且 javascript 函数可以读取此值来控制滚动。

这有意义吗?

如果您更新您的问题以包含一些示例代码,那么我可能会进一步澄清。

【讨论】:

  • 谢谢!这为我清除了一些事情。隐藏字段的想法也是一个不错的想法,但由于页面正在提交或基本上刷新,刷新后是否会重置该值?
  • 隐藏字段的值设置在两个地方。首先是在客户端,这样做是为了确保帖子中包含相关信息。 (即点击了哪个元素) 第二个位置在服务器端,这用于将被点击元素的身份传达给响应页面,以便客户端代码可以滚动到它。 (服务器端最初可能会将隐藏字段设置为一个值(例如空字符串或零),表明没有单击任何元素并且不需要滚动。
【解决方案2】:

如果您执行“真实”表单提交,实际页面会刷新,您无法从客户端执行此操作(使用框架除外)。离开页面后,您的 javascript 超出范围。您需要将 javascript 插入服务器上的刷新页面。

另一方面,如果您通过 ajax 提交表单并刷新页面的一部分,那么根据您使用的框架,您将在 ajax 中寻找像 onSuccess 等回调挂钩提交函数

【讨论】:

  • 感谢您的帮助!似乎这块代码需要更新为 AJAX。
【解决方案3】:

这在 ajax 中会更容易做到,但是如果您需要将其作为回发,那么您需要将一个事件附加到正文加载事件并使用回发发送一些数据,这些数据将识别页面已加载为回发的一部分,而不是新的页面加载。

例如在网页上创建一个隐藏控件并在回发时给它一个值,在回发时检查该隐藏控件是否有值,如果有,请运行您的 scorll 代码。

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 2023-03-18
    • 1970-01-01
    • 2015-06-05
    • 2016-12-09
    • 2018-02-24
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多