我已将函数绑定(bind)到表单提交按钮。我希望函数弹出一个 iframe 对话框并等待用户交互,然后提交表单(通过 ajax post)。
但我看到的行为是对话框弹出,但函数继续执行并执行 ajax post,即使对话框调用尚未返回。我需要某种方法来停止代码执行,直到该对话框函数返回。
我有这样的东西:
submitForm: function () {
<call a function that pops up a dialog, doesn't return until user interacts>
new Ajax.Updater('dialogContainer', url, {
...........
}
});
return false;
}
我认为这是 Javascript 的预期行为,但我不确定如何绕过它...
最佳答案
浏览器中的 Javascript 将按顺序执行,因此显然您启动 iframe 对话框的调用不会等待用户交互并立即返回。我的猜测是,无论您使用什么库来弹出对话框,都会有某种回调函数,它会根据用户操作执行。因此,您只需将 new Ajax.Updater(....);
代码移动到回调函数中即可。
关于Javascript函数执行而不等待上面几行中的函数返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026847/