如何在 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>

提交表單後清除表單的所有輸入欄位

有時,我們可能需要清除表單的所有輸入欄位。我們可以使用JavaScriptquerySelector()方法來選擇表單的所有輸入欄位,這將返回所有輸入欄位的陣列

之後,我們可以遍歷輸入陣列,並透過將其值屬性賦值為空字串來清除每個輸入。

語法

使用者可以按照以下語法訪問所有輸入並清除它們。

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() 方法清除整個表單。此外,使用者還可以僅使用第二種方法清除表單的輸入欄位。使用者應該使用第一種方法僅清除特定輸入欄位。

更新於:2023年9月14日

41K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告