【问题标题】:How to raise "completed" event on a submit event?如何在提交事件上引发“完成”事件?
【发布时间】:2011-09-03 05:52:38
【问题描述】:

控制器动作是在completedCallback 之后而不是在$(this).submit() 之后调用的。 请参阅下面的代码。 如何在不使用 ajax 的情况下触发完成的回调之前触发操作?

控制器:

public ActionResult MyFunction(FormCollection data){ //this should trigger before calling the CompletedEvent }

javascript

var flag = false; $(form).submit(function(){ if(!flag){ //raise start event startedCallback.call(); flag = true; $(this).submit(); //raise completed event completedCallback.call(); } });

【问题讨论】:

  • 没有ajax是什么意思?根据定义,您给出的示例是异步的。如果您提交“同步”表单,则意味着脚本将在 $(this).submit() 子句之后退出并跟进表单页面。也许您不想使用 xml?或者你正在使用某种 iframe 结构?也许您可以分享一个您希望完成的示例?
  • 你知道阿伦德和亚当给了你唯一能得到的“正确”答案,对吧?

标签: jquery asp.net-mvc


【解决方案1】:

也许您的操作可以返回一个 url 变量,例如 ?status=submitted

然后检查您的 javascript 是否存在该变量,如果存在,则触发您的 completedCallback

顺便说一句,如果您不想在flag == true 中提交表单,您应该在$(form).submit(function(){return false;}); 中返回false

【讨论】:

  • 欢迎来到 StackOverflow !当您编写内联代码时(在您的文本中),您可以用反引号将其包围,这样它就不会以与常规文本相同的字体出现。例如,如果您单击以编辑您的答案,您将看到我为您添加它们的位置。 :)
【解决方案2】:

如果您不想使用 ajax,则无法在提交后可靠地调用某些内容 - 表单的处理已完成。如果您想要响应,则必须使用 ajax。

如果您想在表单提交之前调用您的函数 - 再次......您必须使用某种形式的 ajax。

How do I capture response of form.submit

如果您真的需要控制此类事件 - 您需要 ajax 或 iframe hack。对不起:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多