提交后清除表单输入

我已经尝试了几种不同的方式,基于我在这个主题上所做的搜索,出于某种原因,我无法让它发挥作用。 我只想在输入提交按钮后清除文本输入和textarea。

这是代码。

 

您的表单已提交,因为您的按钮是submit类型。 在大多数浏览器中,这将导致表单提交和加载服务器响应,而不是在页面上执行javascript。

将提交按钮的类型更改为button 。 此外,由于此按钮被赋予id submit ,它将导致与Javascript的提交function冲突。 更改此按钮的ID。 尝试类似的东西

  

此实例中的另一个问题是表单的名称包含-破折号。 但是,Javascript翻译-作为减号。

您需要使用基于数组的表示法或使用document.getElementById() / document.getElementsByName()getElementById()函数直接返回元素实例,因为Id是唯一的(但它需要设置Id)。 getElementsByName()返回具有相同名称的值数组。 在这个例子中,由于我们没有设置id,我们可以使用索引为0的getElementsByName

请尝试以下方法

 function submitForm() { // Get the first form with the name // Usually the form name is not repeated // but duplicate names are possible in HTML // Therefore to work around the issue, enforce the correct index var frm = document.getElementsByName('contact-form')[0]; frm.submit(); // Submit the form frm.reset(); // Reset all form data return false; // Prevent page refresh } 

你可以试试这个:

 function submitForm() { $('form[name="contact-form"]').submit(); $('input[type="text"], textarea').val(''); } 

此脚本需要在页面上添加jquery。

最简单的方法是设置表单元素的值。 如果您正在使用jQuery(我强烈推荐),您可以轻松地使用它

 $('#element-id').val('') 

对于表单中的所有输入元素,这可能有效(我从未尝试过)

 $('#form-id').children('input').val('') 

请注意,.children只能找到一级向下的输入元素。 如果你需要找到孙子或类似的.find()应该工作。

可能有更好的方法,但这应该对你有用。

试试这个:

 $('#contact-form input[type="text"]').val(''); $('#contact-form textarea').val(''); 

因为您正在使用jquery库,我建议您使用reset()方法。

首先,为表单标记添加id属性

 

然后在完成时,将输入字段清除为:

 $('#myForm')[0].reset(); 

试试这个:

 function submitForm () { // your code $('form :input').attr('value', ''); }