如何在onsubmit后清除一个普通的HTML表单?

8
在onsubmit事件触发并且表单已通过action="mailto:yournamehere@somebox.com"提交后,是否有一种方法可以清除表单、关闭窗口或其他操作?是否有一个我可以通过JavaScript连接到的提交后事件?这必须是客户端的解决方案。
4个回答

21

一个快速简易的解决方案:

<form action="mailto:email@email.com"
    onsubmit="this.submit(); this.reset(); return false;">

我的代码看起来像这样:<form action="mailto:you@here.com" method="post" name="volunteer" id="volunteer" onsubmit="this.submit();this.reset();return false;" enctype="text/plain"> 这给我一个JavaScript错误,说对象不支持此属性或方法。我正在寻找另一个导致此问题的原因。当删除额外的onsubmit代码时,一切正常。所以我有点困惑。 - Mike T
我马上就要被拖到另一个项目中,但稍后会回来编辑这个问题。 - Mike T

5
function submit_form() {
document.formu1.submit();
document.formu1.reset(); 
}

<form name="formu1" action="action-page" method="POST" target="_blank" />
Name: <input type="text" name="name" /><br /><br />
Pass: <input type="password" name="pass" /><br /><br />
<input type="button" value="Send" onclick="submit_form();" />
</form>

1

没有这种事件。

你可以使用类似以下的方式来破解它:

// Begin anonymous wrapper function to limit the scope of variables
// and avoid namespace collisions.
(function () {
  // Get a quick reference to the form. 
  var f = document.forms.myForm;
  // Define a submit handler that won't actually
  // do anything until after the form has "submitted"
  f.onsubmit = function () {
    setTimeout(f.reset, 1000);
  }
}());

然而,action="mailto:…"的支持性较差,因此您应该使用真正的表单处理程序,而不是试图绕过mailto:的限制。


抱歉,我不明白它是如何运作的。提交表单后什么也没有发生。可能在某个地方丢失了对表单的引用。 - Mike T

0

你可以简单地放置:

document.getElementById("myform").reset();

在你的onSubmit()处理函数中。


这样做会在提交表单之前重置表单。它需要在.submit()动作之后完成。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接