如何在 JavaScript 中提交表单后清除表单内容,而不使用 reset 方法?
在互联网上,我们很少能找到不包含表单的网站。大多数网站包含联系表单,有些包含工作申请表单,有些包含产品订单表单。
表单允许我们从用户那里获取输入,并在应用程序的前端或后端进行操作。此外,为了向应用程序用户提供良好的用户体验,我们需要在用户提交表单后重置所有表单数据。
在本教程中,我们将学习几种方法来清除表单的输入字段,一旦用户按下提交按钮。
提交表单后清除单个输入字段
在本部分中,我们将学习如何清除表单的单个输入字段。有时,它需要用户通过更改某些输入值来多次提交表单。因此,在这种情况下,我们可以分别清除某些输入字段,而不是清除所有输入字段。
语法
用户可以按照以下语法清除表单的单个输入字段。
let input1 = document.getElementById('input1'); input1.value = "";
在上面的语法中,我们通过其 ID 访问表单的输入,并将空字符串赋值给输入的值。
示例
在下面的示例中,我们创建了一个包含单个输入的表单。当用户按下“清除输入字段”按钮时,它将调用clearText()函数,该函数将重置输入字段的值。
在输出中,用户可以观察到,当他们按下提交按钮时,它会清除输入字段。
<html> <body> <h3>Clearing only single input field of form when a user submits the form</h3> <p>Please enter a string below:</p> <form> <input type = "text" id = "input1" /> <br> <br> </form> <button type = "submit" onclick = "clearText()"> clear input field</button> <p id = "output"> </p> <script> let output = document.getElementById('output'); function clearText(event) { // access input field let input1 = document.getElementById('input1'); // clear the input field. input1.value = ""; output.innerHTML += "Form submitted successfully! <br>"; } </script> </body> </html>
提交表单后清除表单的所有输入字段
有时,我们可能需要清除表单的所有输入字段。我们可以使用JavaScript的querySelector()方法来选择表单的所有输入字段,这将返回所有输入字段的数组。
之后,我们可以遍历输入数组,并通过将其值属性赋值为空字符串来清除每个输入。
语法
用户可以按照以下语法访问所有输入并清除它们。
var allInputs = document.querySelectorAll('input'); allInputs.forEach(singleInput => singleInput.value = '');
在上面的语法中,“inputs”是所有输入的数组,我们使用了forEach()循环方法来遍历所有输入。
示例
在下面的示例中,我们创建了多种不同类型的多输入表单。之后,在 JavaScript 中,我们使用querySelector()方法选择所有输入。在forEach()循环中,我们传递了回调函数,该函数为每个输入的值属性设置空字符串。
当用户点击“清除所有输入”按钮时,它将清除所有输入字段。
<html> <body> <h3>Clearing only all input fields of form when a user submits the form</h3> <form> First Name: <input type = "text" id = "input1" /> <br> <br> Last Name: <input type = "text" id = "input2" /> <br> <br> Email: <input type = "email" id = "input3" /> <br> <br> </form> <button type = "submit" onclick = "clearAllInputs()"> clear all inputs </button> <p id = "output"> </p> <script> let output = document.getElementById('output'); function clearAllInputs(event) { var allInputs = document.querySelectorAll('input'); allInputs.forEach(singleInput => singleInput.value = ''); output.innerHTML += "Form submitted and cleared successfully! <br>"; } </script> </body> </html>
使用 form.reset() 方法重置整个表单
form.reset()是 JavaScript 中用于清除表单的内置方法。我们可以用它来将表单中的所有值重置为默认值。
语法
用户可以按照以下语法使用reset()方法在用户提交表单时重置整个表单。
formToReset.reset();
在上面的语法中,formToReset() 是要重置的表单元素。
示例
下面的示例演示了reset()方法的使用。它包含具有两个不同输入字段的表单。此外,我们创建了一个类型为“提交”的按钮,用户可以按它来提交表单。
在 JavaScript 中,我们使用了事件监听器来提交事件,并在提交事件时执行 reset() 方法。
<html> <body> <h3>Clearing only the form using the reset() method when a user submits the form</h3> <form id = "demo_form"> Name: <input type = "text" id = "input1" /> <br> <br> Email:<input type = "email" id = "input3" /> <br> <br> <button type = "submit"> clear all inputs </button> </form> <p id = "output"> </p> <script> let output = document.getElementById('output'); const formToReset = document.getElementById('demo_form'); formToReset.addEventListener('submit', (e) => { e.preventDefault(); formToReset.reset(); output.innerHTML += "The form is resetted successfully!" }); </script> </body> </html>
我们已经成功学习了三种在提交表单后清除表单的方法。用户可以使用 reset() 方法清除整个表单。此外,用户还可以仅使用第二种方法清除表单的输入字段。用户应该使用第一种方法仅清除特定输入字段。