【问题标题】:How to force submit - Asynchronous code in submit event如何强制提交 - 提交事件中的异步代码
【发布时间】:2017-05-11 07:26:46
【问题描述】:

我试图强制提交我的表单,问题是我使用bootboxjs (使用异步代码)在提交之前进行确认对话框,这正是我想要的,所需的输入也以这种方式验证。

这是我的 JS 代码的结构:

$("#myForm").submit(function(e){
  bootbox.confirm({
    message: "Are you sure?",
    buttons: {
        confirm: {
            label: 'Yes',
            className: 'btn-danger'
        },
        cancel: {
            label: 'NO, STOP!',
            className: 'btn-primary'
        }
    },
    callback: function (result){
      if (result)
      {
        // Some code to set values to hidden inputs and another irrelevant stuff...
        // The right command (that I didn't know) to force the form
      }
    }
  });
  return false;
});

如何避免此问题并保留对所需输入的验证?

【问题讨论】:

  • 您能否进一步澄清问题!
  • 问题是我不知道如何在做了一些事情后强制提交表单(请参阅我的问题中的 JavaScript 代码)。

标签: javascript jquery html forms form-submit


【解决方案1】:

您可以阻止 jquery 事件并使用原生事件在您准备好时强制浏览器默认提交

$("#myForm").submit(function(e){
  // store reference to form due to callback context
  var form = this;

  bootbox.confirm({
    message: "Are you sure?",
    buttons: {... },
    callback: function (result){
      if (result)
      {
        // Some code to set values to hidden inputs and another irrelevant stuff...
        // Now use native submit

         form.submit();
      }
    }
  });
  // prevents jQuery submit only
  return false;
});

【讨论】:

  • 我想知道为什么$("#myForm").submit();form.submit(); 不一样,请您澄清一下,我很好奇。
  • 因为 this 不是 jQuery 对象...它是实际元素...所以您使用的不是 jQuery submit() 而是原生 javascript submit(),它绕过了 jQuery 事件侦听器
  • 太棒了!感谢您的解释。我知道这是题外话,但是您认为有人可以通过阅读本书eloquentjavascript.net 来学习这种东西吗?
  • 那是一本众所周知的书......但在这种情况下,它是一个真正来自经验和对 jQuery 工作原理的更深入理解的 jQuery 技巧
猜你喜欢
  • 2019-06-08
  • 2012-12-25
  • 2014-04-22
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
相关资源
最近更新 更多