延迟提交,直到功能完成

时间:2018-02-07 10:43:30

标签: 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;
 });

});

1 个答案:

答案 0 :(得分:1)

要解决此问题,您可以在外部form处理程序函数中存储submit元素的引用,然后在submit()块中调用then()。像这样:

$('#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不会。