2016-12-27 52 views
1

我试图强制提交我的表单,问题是我使用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; 
}); 

我怎样才能避免此问题并保留所需投入的验证?

+0

你能澄清更多的问题浏览器的默认提交! – PacMan

+0

问题是,我不知道如何在做一些事情后强制**提交表单(请参阅我的问题中的JavaScript代码)。 – candlejack

回答

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; 
}); 
+0

我想知道为什么$(“#myForm”)。submit();'与form.submit()不一样?'请你澄清一下,我很好奇。 – candlejack

+1

因为'this'不是一个jQuery对象...它是实际的元素....所以你没有使用jQuery的submit(),但本地JavaScript'submit()'它绕过jQuery事件监听器 – charlietfl

+0

太棒了!感谢您的解释。我知道这是不重要的,但是你认为有人可以通过阅读这本书http://eloquentjavascript.net/来学习这种事情吗? – candlejack