如何在提交事件中提交“已完成”事件?
控制器操作在$(this).submit()之后不是在completedCallback之后调用。 请参阅下面的代码。 如何在不使用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,那么在提交后无法可靠地调用某些东西 - 表单的处理完成。如果您想要回复,您必须使用ajax。
如果你想在你的表单提交之前调用你的函数 - 再次..你必须使用某种形式的ajax。
见 How do I capture response of form.submit
如果你真的需要像这样的活动的控制 - 你需要AJAX或iframe黑客。对不起:)
也许你的行动可以返回一个URL变种,像?status=submitted
?
然后检查你的javascript是否存在var,如果是的话,触发你的completedCallback
。
顺便说一下,如果您不想要提交表格,您应该在$(form).submit(function(){return false;});
中返回false
。
欢迎来到* ju k!在内联代码(在文本中)编写代码时,您可以用反勾号将代码包围起来,以避免它与常规文本显示为相同的字体。例如,如果你点击编辑你的答案,你会看到我为你添加了他们的位置。 :) – 2011-06-06 18:52:08
没有ajax的意思是什么?你给出的例子是Asynchronous。如果您提交'同步'表单,则意味着该脚本将在$(this).submit()子句后面退出并跟随到表单页面。也许你不想使用xml?或者你使用某种Iframe结构?也许你可以分享一个你想要完成的例子吗? – Arend 2011-06-02 09:25:04
你知道阿伦德和亚当给你唯一的“正确”的答案,你会得到,对吗? – jcolebrand 2011-06-05 22:33:50