JS獲取表單數據詳解

在Web開發過程中,表單是常見的數據交互方式,而在這個過程中獲取表單數據就顯得尤為重要。本文從多個方面進行闡述,讓你深入了解JS獲取表單數據的各種方法。

一、JS獲取表單數據的方式

JS獲取表單數據一般有兩種方式:原生JS獲取表單數據和使用第三方庫(如jQuery)獲取表單數據。下面我們將分別介紹這兩種方式。

二、原生JS獲取表單數據

要獲取表單數據,我們可以使用表單元素提供的方法和屬性,比較常用的有以下幾種:

1. `form.elements`:獲取表單中的所有元素,包括input、select、button等;
2. `form.elements.name`:獲取指定name的表單元素,可以返回一個節點或者一個節點列表;
3. `form.elements.type`:獲取指定type的表單元素;
4. `form.elements.value`:獲取表單元素的值。

下面是一個簡單的代碼示例:

<form id="myForm">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="提交">
</form>

<script>
  const form = document.getElementById('myForm');
  console.log(form.elements.username.value); // 獲取用戶名
  console.log(form.elements.password.value); // 獲取密碼
</script>

三、JS獲取表單提交的數據

通過表單的`submit`事件,我們可以獲取表單提交的數據。我們可以使用`FormData`對象來獲取表單數據,也可以手動獲取表單中每個表單元素的值。下面是兩個示例:

1. 使用`FormData`對象獲取表單數據

<form id="myForm">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="提交">
</form>

<script>
  const form = document.getElementById('myForm');
  form.addEventListener('submit', event => {
    event.preventDefault(); // 阻止表單默認提交事件
    const formData = new FormData(form);
    console.log(formData.get('username')); // 獲取用戶名
    console.log(formData.get('password')); // 獲取密碼
  });
</script>

2. 手動獲取表單中每個表單元素的值

<form id="myForm">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="提交">
</form>

<script>
  const form = document.getElementById('myForm');
  form.addEventListener('submit', event => {
    event.preventDefault(); // 阻止表單默認提交事件
    const username = form.elements.username.value; // 獲取用戶名
    const password = form.elements.password.value; // 獲取密碼
    console.log(username);
    console.log(password);
  });
</script>

四、獲取表單所有數據的方法

有時候,我們需要獲取表單中所有的數據,包括複選框和多選框等。這時候,我們可以通過循環表單元素來獲得所有表單數據。下面是一個簡單的示例代碼:

<form id="myForm">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="checkbox" name="checkbox" value="1">選項1</checkbox>
  <input type="checkbox" name="checkbox" value="2">選項2</checkbox>
  <input type="radio" name="radio" value="1">單選項1</radio>
  <input type="radio" name="radio" value="2">單選項2</radio>
  <select name="select">
    <option value="1">選項1</option>
    <option value="2">選項2</option>
  </select>
  <textarea name="textarea"></textarea>
  <input type="submit" value="提交">
</form>

<script>
  const form = document.getElementById('myForm');
  form.addEventListener('submit', event => {
    event.preventDefault(); // 阻止表單默認提交事件
    const formData = {};
    for (let i = 0; i < form.elements.length; i++) {
      const element = form.elements[i];
      if (element.name) {
        if (element.type === 'checkbox' || element.type === 'radio') {
          if (element.checked) {
            if (!formData[element.name]) {
              formData[element.name] = element.value;
            } else {
              formData[element.name] += `, ${element.value}`;
            }
          }
        } else {
          formData[element.name] = element.value;
        }
      }
    }
    console.log(formData);
  });
</script>

五、JS獲取表單數據並求和

有時候,我們需要對錶單數據做一些複雜的處理,例如求和、計算平均值等。下面是一個簡單的例子,展示如何獲取表單中的數值數據並求和:

<form id="myForm">
  <input type="number" name="number1">
  <input type="number" name="number2">
  <input type="submit" value="提交">
</form>

<script>
  const form = document.getElementById('myForm');
  form.addEventListener('submit', event => {
    event.preventDefault(); // 阻止表單默認提交事件
    let sum = 0;
    for (let i = 0; i < form.elements.length; i++) {
      const element = form.elements[i];
      if (element.type === 'number') {
        sum += parseInt(element.value);
      }
    }
    console.log(sum);
  });
</script>

六、JS獲取form表單數據

如果我們有多個表單,我們需要分別處理每個表單的提交事件。這時候,我們可以通過在form標籤上添加`data-type`屬性來進行區分。例如:

<form id="form1" data-type="type1">
  <!-- ... -->
</form>

<form id="form2" data-type="type2">
  <!-- ... -->
</form>

然後在JS代碼中,我們可以根據`data-type`屬性值來進行判斷,如下所示:

<script>
  const forms = document.getElementsByTagName('form');
  for (let i = 0; i < forms.length; i++) {
    const form = forms[i];
    form.addEventListener('submit', event => {
      event.preventDefault(); // 阻止表單默認提交事件

      // 獲取 data-type 屬性
      const type = form.dataset.type;

      // 獲取表單數據的方式略
      // ...

      // 處理數據的方式略
      // ...
    });
  }
</script>

七、jQuery獲取表單數據

如果使用jQuery,我們可以使用`serializeArray()`和`serialize()`兩種方法來獲取表單數據。其中,`serializeArray()`可以將表單數據轉換成一個鍵值對數組,`serialize()`則以URL編碼的方式返回表單數據。下面是一個示例代碼:

<form id="myForm">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="提交">
</form>

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script>
  const form = $('#myForm');
  form.submit(event => {
    event.preventDefault(); // 阻止表單默認提交事件
    const formData = form.serializeArray();
    console.log(formData);
  });
</script>

八、獲取表單數據存入數據庫

最後,我們來講一下如何將表單數據存入數據庫。首先,前端需要將表單數據發送到後端,後端再進行存儲等操作。可以使用AJAX技術進行數據的發送和接收,也可以直接使用form標籤的`action`和`method`屬性指定表單提交的地址和方式。下面是一個簡單的示例代碼:

<form id="myForm" action="/submit" method="post">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="提交">
</form>

<script>
  const form = $('#myForm');
  form.submit(event => {
    event.preventDefault(); // 阻止表單默認提交事件
    $.ajax({
      url: form.attr('action'),
      type: form.attr('method'),
      data: form.serialize(),
      success: response => {
        console.log(response);
      }
    });
  });
</script>

以上就是JS獲取表單數據的各種方法,希望對你有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240563.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:21
下一篇 2024-12-12 12:22

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論