如何在 JavaScript 中提交表單時停止頁面重新整理?
在本教程中,我們將學習如何在 JavaScript 中提交表單時停止頁面重新整理。
讓我們來了解實現此目標的方法。
使用 event.preventDefault() 停止表單提交時的頁面重新整理
在本節中,我們將瞭解如何使用 event.preventDefault() 停止表單提交時的頁面重新整理。 event.preventDefault() 在表單提交期間限制了表單的預設頁面重新整理行為。
使用者可以按照以下語法嘗試此方法。
語法
<form id="formId"> <input type="text" value=="value"/> <input type="submit"/> </form>
語法定義了表單。
//Get form element var form=document.getElementById("formId"); function submitForm(event){ //Preventing page refresh event.preventDefault(); } //Calling a function during form submission. form.addEventListener('submit', submitForm);
語法為表單提交事件添加了一個事件監聽器。回撥函式呼叫 event.preventDefault() 方法來阻止頁面重新整理。
示例
在此示例中,表單包含兩個輸入欄位。當用戶單擊提交按鈕時,事件處理程式回撥函式開始執行。表單提交和阻止頁面重新整理會立即發生。
<html> <body> <h2>Program to stop form refreshing page on submit in JavaScript using <i>event.preventDefault()</i></h2> <form id="formId"> Name: <input type="text" name="name" required/><br><br> Email: <input type="email" name="email" required/><br><br> <input type="submit" value="Submit!" /> </form> <p id="opTag"></p> <script> var form = document.getElementById("formId"); var opTag = document.getElementById("opTag"); function submitForm(event) { event.preventDefault(); form.style.display = "none"; opTag.innerHTML = "<b>Form submit successful</b>"; } form.addEventListener('submit', submitForm); </script> </body> </html>
使用“return false”停止表單提交時的頁面重新整理
在本節中,我們將瞭解如何使用 "return false" 停止表單提交時的頁面重新整理。"return false" 會取消頁面重新整理。
使用者可以按照以下語法嘗試此方法。
語法
<form onsubmit="jsFunction();return false"> <input type="checkbox" value="value"> <input type="submit"/> </form>
語法在表單提交操作上呼叫一個 JavaScript 函式。"return false" 緊跟在函式呼叫之後。
示例
在此示例中,兩個複選框是表單輸入欄位。表單具有提交事件回撥函式和 "return false" 語句。
"return false" 語句刪除了表單提交時的頁面重新整理。提交按鈕會消失,並且在使用者請求時,頁面會顯示錶單提交成功。
<html> <body> <h2>Program to stop form refreshing page on submit in JavaScript using <i>return false</i></h2> <form id="retForm" onsubmit="submitFormReturn();return false;"> <input type="checkbox" id="bike" name="bike" value="Bike"> <label for="bike">Egan likes bike</label><br> <input type="checkbox" id="car" name="car" value="Car"> <label for="car">Egna likes car</label><br><br> <input type="submit" value="Submit"> </form> <p id="retOp"></p> <script> var retForm = document.getElementById("retForm"); var retOp = document.getElementById("retOp"); function submitFormReturn(event) { retForm.style.display = "none"; retOp.innerHTML = "<b>Form submit successful</b>"; } </script> </body> </html>
使用 Ajax 表單提交停止表單提交時的頁面重新整理
在本節中,我們將瞭解如何使用 ajax 表單提交停止表單提交時的頁面重新整理。ajax 表單提交是提交表單而無需頁面重新整理的另一種方法。
使用者可以按照以下語法嘗試此方法。
語法
<form id="ajxForm" onsubmit="submitFormAjax();"> <input type="text" value="value"> <input type="submit"/> </form>
語法定義了一個表單,其中包含執行表單提交的提交回調函式。
//Get the form data var data=new FormData(document.getElementById("formId")); //Create XMLHttpRequest var xhr=new XMLHttpRequest(); //Open the connection and send the data to the server xhr.open("POST", "SERVER-SCRIPT"); xhr.send(data); //Avoids default form submit return false;
語法讀取表單元素並開啟一個 xhr 連線。然後透過阻止預設表單提交操作將表單資料傳送到伺服器。
示例
在此示例中,提供了一個包含四個文字欄位的候選表單示例。表單提交事件函式讀取此表單,建立一個 XMLHttpRequest,並啟動一個連線以將資料傳送到伺服器。
函式定義末尾的 "return false" 語句停止了預設表單提交,並執行了 ajax 表單提交。
<html> <body> <h2>Program to stop form refreshing page on submit in JavaScript using <i>ajax form submit</i></h2> <form id="ajxForm" onsubmit="submitFormAjax();"> <fieldset style="background: lightgrey; border: 5px solid #000;"> <legend>Candidate Data</legend> <input type="text" name="firstname" placeholder="First name"><br/><br/> <input type="text" name="lastname" placeholder="Last name"><br/><br/> <input type="text" name="email" placeholder="Email"><br /><br/> <input type="text" name="phone" placeholder="Phone"><br /><br/> <input type="submit" value="Submit"> </fieldset> </form> <script> function submitFormAjax(event) { var ajxForm = document.getElementById("ajxForm"); var data = new FormData(ajxForm); var xhr = new XMLHttpRequest(); xhr.open("POST", ""); xhr.send(data); xhr.onload = function() { alert("Submitted"); }; return false; } </script> </body> </html>
使用 fetch API 表單提交停止表單提交時的頁面重新整理
在本節中,我們將瞭解如何使用 fetch API 表單提交停止表單提交時的頁面重新整理。fetch API 表單提交是提交表單而無需頁面重新整理的另一種方法。ajax 表單提交後,頁面會重新渲染。
使用者可以按照以下語法嘗試此方法。
語法
<form id="fetchForm" onsubmit="submitFormFetch ();"> <select> <option value="value"></option> <input type="submit"/> </form>
語法包含一個表單,其中包含用於執行 fetch API 表單提交的提交函式呼叫。
//Get the form var data=new FormData(document.getElementById("formId")); //Use fetch syntax to submit the form data fetch("SERVER-SCRIPT", { method: "post", body: data }); //Stop default form submit action return false;
語法讀取表單資料並使用 fetch API 提交它,同時停止預設表單提交。
示例
在此示例中,嘗試使用選擇下拉選單作為輸入欄位。表單具有 fetch 表單資料並提交它的提交函式。函式末尾的 "return false" 語句預設停止了表單提交操作。請注意,fetch API 表單提交後,頁面會重新渲染。
<html> <body> <h2>Program to stop form refreshing page on submit in JavaScript using <i>fetch form submit</i></h2> <form id="fetchForm" onsubmit="submitFormFetch();"> <label for="city">RaceCourse:</label> <select name="racecourse" id="racecourse"> <option value="ascot">Ascot</option> <option value="belmont">Belmont</option> </select><br><br> <input type="submit" value="Submit!" /> </form> <script> function submitFormFetch(event) { var fetchForm = document.getElementById("fetchForm"); var data = new FormData(fetchForm); fetch("", { method: "post", body: data }) .then((res) => { return res.text(); }) .then((txt) => { alert("Submit Success"); }) .catch((err) => { alert(err); }); return false; } </script> </body> </html>
本教程教會了我們四種停止表單提交時頁面重新整理的方法。preventDefault() 和 "return false" 方法用於停止預設表單提交時的頁面重新整理。ajax 方法和 fetch API 方法是無需頁面重新整理即可提交表單的替代方法。