提交到iframe后清除表单

Clear Form after submit to iframe

本文关键字:清除 表单 iframe 提交      更新时间:2023-09-26

我有一个表单需要提交到另一个域,像这样:

<form id="myform" action="https://example.com" target="myiframe" method="POST">
   <input type="text" name="email" value="">
   <input type="text" name="name" value="">
   <input type="text" name="phone" value="">
   <input type="submit" name="submit" value="Submit">
</form>

和iframe:

<iframe style="display:none;" name="myiframe" src=""></iframe>

这个工作很好,但在提交表单后,它保持填写。那么,提交后如何清除(重置)表单呢?

使用事件侦听器触发提交和清除。

首先,将提交按钮更改为具有适当id的常规按钮(您应该对其他元素执行相同操作):

<input type="button" name="submitButton" id="submitButton" value="Submit" />

然后用JavaScript将事件监听器绑定到按钮:

<script type="text/javascript">
    document.getElementById('submitButton').addEventListener('click', function ()
    {
        handleTheForm;
    }, false);
</script>

其中handleTheform为方法,定义如下:

<script type="text/javascript">
    function handleTheForm()
    {
        document.forms[0].submit(); // Submit the form.
        document.forms[0].reset(); // Clear the form.
    }
</script>

Edit要处理Enter按钮,只需为按钮添加一个事件侦听器并检查正在按下的键:

<script type="text/javascript">
    document.addEventListener('keypress', function (e)
    {
        var key = e.which || e.keyCode;
        var enterKey = 13;
        if (key == enterKey)
        {
            handleTheForm;
        }
    });
</script>

你的最终图片应该看起来像这样:

<form id="myform" action="https://example.com" target="myiframe" method="POST">
  <input type="text" name="email" id="email" value="" />
  <input type="text" name="name" id="name" value="" />
  <input type="text" name="phone" id="phone" value="" />
  <input type="button" name="submitButton" id="submitButton" value="Submit" />
</form>
<script type="text/javascript">
    function handleTheForm()
    {
        document.forms[0].submit(); // Submit the form.
        document.forms[0].reset(); // Clear the form.
    }
    document.getElementById('submitButton').addEventListener('click', function ()
    {
        handleTheForm;
    }, false);
    document.addEventListener('keypress', function (e)
    {
        var key = e.which || e.keyCode;
        var enterKey = 13;
        if (key == enterKey)
        {
            handleTheForm;
        }
    });
</script>

您可能需要tweek一些东西,但由于我还没有设法测试这个

这个解决方案适用于你的问题

// code from answer with bind() transfered to plain javascript
function SubmitWithCallback(form, frame, successFunction) {
   var callback = function () {
       if(successFunction)
           successFunction();
       frame.removeEventListener('load', callback, false);
   };
   frame.addEventListener('load', callback, false);
   form.submit();
}

您可以使用jQuery by

轻松实现这一点
$("#formId").reset();