我有以下 JS 代码。 问题是表单总是在 then 函数之前提交。 我希望表单仅在 then 函数之后提交。
我该怎么做?谢谢
$('#form').submit(function (e) {
e.preventDefault();
html2canvas(document.getElementById('uty'), {
useCORS: true,
}).then(function (canvas) {
var img = canvas.toDataURL("image/png");
document.getElementById('input').value = img;
});
});
最佳答案
要解决这个问题,您可以在外部 submit
处理函数中存储对 form
元素的引用,然后在该函数上调用 submit()
在 then()
block 中。像这样:
$('#form').submit(function (e) {
e.preventDefault();
var form = this;
html2canvas(document.getElementById('uty'), {
useCORS: true,
}).then(function(canvas) {
var img = canvas.toDataURL("image/png");
document.getElementById('input').value = img;
form.submit();
});
});
请注意,我正在调用 DOM submit
函数,而不是 jQuery 的。 jQuery 会重新运行提交处理程序,而 DOM 不会。
关于javascript - 延迟提交直到函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48661791/