如何在 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 方法是无需页面刷新即可提交表单的替代方法。

更新于:2023年9月2日

84K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告