2016-08-04 63 views
0

我使用EmailJS(emailjs.com)进行表单提交,虽然我能够正确发送它,但实际上,当我使用reset()方法时它会停止发送。这是我的代码:重置提交的HTML表单

<div class="topForm"> 
    <form id="myform" onsubmit="emailjs.sendForm('mailjet', 'city_request', this); return false;" method="post"> 
     <div class="form-group"> 
      <input type="email" class="email" id="userEmail" placeholder="Enter email" name="userEmail"> 
      <button type="submit" id="userEmailButton" class="btn btn-primary">Sign up</button> 
     </div> 
    </form> 
</div> 

以上,我可以在EmailJS的日志部分查看提交的信息。我的问题是当我这样做:

<form id="myform" onsubmit="emailjs.sendForm('mailjet', 'city_request', this).reset(); return false;" method="post"> 

添加.reset段()将清除出在提交表单,但不会将其发送到EmailJS。此外,我试图在一个文件中使用JavaScript,如下所示:

function myFunction() { 
    var form = document.getElementById('myform'); 
    form.reset(); 
} 

但是显然它也不起作用。有谁知道发生了什么事?我一直试图让表单与reset()方法同时工作,但没有运气。

+1

您是否尝试过使用'.then()'仅在成功提交表单后才应用复位:http://www.emailjs.com/docs/api-reference/emailjs-send/ –

+0

哇。感谢您注意到这一点,我彻底检查了一下,希望我早日注意到它。我得到它与你的建议工作,所以再次感谢! – mur7ay

+0

@RobertC你想提交一个答案,所以我可以接受它作为正确的解决方案? – mur7ay

回答

0

根据他们的文档(https://www.emailjs.com/docs/api-reference/emailjs-send/),您可以使用send()方法的承诺 - 但不清楚是否可以使用sendForm()方法。你应该试试。如果sendForm可以与承诺一起使用 - 请将reset()放在那里。如果没有 - 您将不得不使用send()方法,并从表单元素准备好自己的JSON对象(3-rd参数)。

+0

感谢您的输入。我可以通过使用.then(reset())来使它工作。 – mur7ay

1

与罗伯特C'S评论我能够得到它复位并做适当提交EmailJS如下:使用.then()并把reset()括号内

<form id="myform" onsubmit="emailjs.sendForm('mailjet', 'city_request', this).then(reset()); return false;" method="post"> 

+0

你可以让他发表他自己的答案...... – Mistalis