javascript - 延迟提交直到函数完成

标签 javascript jquery html2canvas

我有以下 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/

相关文章:

javascript - 包含大量图片的网页 : slow scrolling?

javascript - Magento 管理面板 - 页面属性集不起作用 "Add group"

javascript - 在页面加载时更改 css

javascript - 如何使用 HTML/JavaScript 捕获客户端 "desktop"部分的屏幕截图?

jquery - html2canvas 不渲染图像(外部托管图像)

javascript - 使用jquery将div转换为图像数据

javascript - 如何通过 Excel VBA 设置 Acrobat XI 打印机设置?

javascript - 使用 KineticJS 在 HTML5 Canvas 上制作线性动画。如何制作?

javascript - jQuery .height() 或 outterheight() 返回值大于实际元素高度

javascript - 如何让 Tampermonkey 脚本在 hashchange 事件后等待页面完成?