提交时重置HTML表单

时间:2016-08-04 14:04:41

标签: javascript html forms twitter-bootstrap

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

<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()方法同时工作,但根本没有运气。

2 个答案:

答案 0 :(得分:1)

根据Robert C的评论,我可以通过执行以下操作重置并正确提交给EmailJS:

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

使用.then()并将reset()放在括号内。

答案 1 :(得分:0)

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