首頁 > web前端 > js教程 > 使用JavaScript實現表格資料的線上編輯

使用JavaScript實現表格資料的線上編輯

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2023-06-15 20:53:04
原創
2680 人瀏覽過

在現代網路應用程式中,表格是一個常見的UI元件,用於展示和編輯資料。在某些情況下,使用者可能需要在表格中直接進行編輯以便快速修改數據,而不必轉到其他頁面或使用外部工具進行修改。因此,實現線上表格編輯功能非常有用。在本文中,我將介紹如何使用JavaScript和一些開源程式庫實現表格資料的線上編輯。

1. HTML表格建立

在開始使用JavaScript之前,請先建立一個HTML表格。以下是一個簡單的範例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<table>

  <thead>

    <tr>

      <th>名称</th>

      <th>价格</th>

      <th>库存</th>

    </tr>

  </thead>

  <tbody>

    <tr>

      <td>苹果</td>

      <td>1.99</td>

      <td>100</td>

    </tr>

    <tr>

      <td>橙子</td>

      <td>0.99</td>

      <td>50</td>

    </tr>

  </tbody>

</table>

登入後複製

2. 新增編輯按鈕和事件處理程序

在表格的每個可編輯儲存格中新增「編輯」按鈕,並在點擊按鈕時啟動編輯模式。以下是如何實現:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

<table>

  <thead>

    <tr>

      <th>名称</th>

      <th>价格</th>

      <th>库存</th>

    </tr>

  </thead>

  <tbody>

    <tr>

      <td>

        <div class="editable-cell">

          <span class="value">苹果</span>

          <input type="text" class="editor" value="苹果">

          <button class="edit-btn">编辑</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">1.99</span>

          <input type="text" class="editor" value="1.99">

          <button class="edit-btn">编辑</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">100</span>

          <input type="number" class="editor" value="100">

          <button class="edit-btn">编辑</button>

        </div>

      </td>

    </tr>

    <tr>

      <td>

        <div class="editable-cell">

          <span class="value">橙子</span>

          <input type="text" class="editor" value="橙子">

          <button class="edit-btn">编辑</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">0.99</span>

          <input type="text" class="editor" value="0.99">

          <button class="edit-btn">编辑</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">50</span>

          <input type="number" class="editor" value="50">

          <button class="edit-btn">编辑</button>

        </div>

      </td>

    </tr>

  </tbody>

</table>

登入後複製

在以下範例中,我將使用jQuery庫來尋找並處理DOM元素:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$(document).ready(function() {

  // 查找所有编辑按钮和可编辑单元格

  var editBtns = $('.edit-btn');

  var cells = $('.editable-cell');

 

  // 添加事件处理程序

  editBtns.click(function() {

    var cell = $(this).closest('.editable-cell');

    var valueSpan = cell.find('.value');

    var editor = cell.find('.editor');

 

    // 切换编辑模式

    valueSpan.hide();

    editor.show().focus();

 

    // 提交修改

    editor.blur(function() {

      valueSpan.text(editor.val());

      editor.hide();

      valueSpan.show();

    });

  });

});

登入後複製

這段程式碼首先尋找所有「編輯」按鈕和可編輯單元格,並在按鈕上啟動點選處理程序。在處理程序中,它會尋找所需的元素(值的文字節點、編輯器和儲存格),切換編輯模式,並將焦點設定在編輯器上。當使用者完成編輯並且編輯器失去焦點時,處理程序將提交修改,將更新後的值顯示在文字節點中。

3. 新增儲存和取消按鈕

在編輯模式中,使用者需要有一個方法來儲存或取消修改。我們可以新增兩個按鈕來完成這個操作:

1

2

<button class="save-btn">保存</button>

<button class="cancel-btn">取消</button>

登入後複製

請注意,這些按鈕應該包含在每個可編輯儲存格的編輯模式下,以便使用者可以在需要時儲存或取消單一儲存格的修改。以下是如何實現:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

<table>

  <thead>

    <tr>

      <th>名称</th>

      <th>价格</th>

      <th>库存</th>

    </tr>

  </thead>

  <tbody>

    <tr>

      <td>

        <div class="editable-cell">

          <span class="value">苹果</span>

          <input type="text" class="editor" value="苹果">

          <button class="edit-btn">编辑</button>

          <button class="save-btn">保存</button>

          <button class="cancel-btn">取消</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">1.99</span>

          <input type="text" class="editor" value="1.99">

          <button class="edit-btn">编辑</button>

          <button class="save-btn">保存</button>

          <button class="cancel-btn">取消</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">100</span>

          <input type="number" class="editor" value="100">

          <button class="edit-btn">编辑</button>

          <button class="save-btn">保存</button>

          <button class="cancel-btn">取消</button>

        </div>

      </td>

    </tr>

    <tr>

      <td>

        <div class="editable-cell">

          <span class="value">橙子</span>

          <input type="text" class="editor" value="橙子">

          <button class="edit-btn">编辑</button>

          <button class="save-btn">保存</button>

          <button class="cancel-btn">取消</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">0.99</span>

          <input type="text" class="editor" value="0.99">

          <button class="edit-btn">编辑</button>

          <button class="save-btn">保存</button>

          <button class="cancel-btn">取消</button>

        </div>

      </td>

      <td>

        <div class="editable-cell">

          <span class="value">50</span>

          <input type="number" class="editor" value="50">

          <button class="edit-btn">编辑</button>

          <button class="save-btn">保存</button>

          <button class="cancel-btn">取消</button>

        </div>

      </td>

    </tr>

  </tbody>

</table>

登入後複製

與「編輯」按鈕類似,我們需要新增事件處理程序來處理這兩個按鈕的點擊事件,並向伺服器提交表格資料。以下是如何實現:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

$(document).ready(function() {

  // 查找所有编辑按钮、保存按钮和取消按钮

  var editBtns = $('.edit-btn');

  var saveBtns = $('.save-btn');

  var cancelBtns = $('.cancel-btn');

 

  // 添加事件处理程序

  editBtns.click(function() {

    var cell = $(this).closest('.editable-cell');

    var valueSpan = cell.find('.value');

    var editor = cell.find('.editor');

    var saveBtn = cell.find('.save-btn');

    var cancelBtn = cell.find('.cancel-btn');

 

    // 切换编辑模式

    valueSpan.hide();

    editor.show().focus();

    saveBtn.show();

    cancelBtn.show();

 

    // 提交修改

    saveBtn.click(function() {

      valueSpan.text(editor.val());

      editor.hide();

      valueSpan.show();

      saveBtn.hide();

      cancelBtn.hide();

 

      // 向服务器提交表格数据

      var rowData = {

        name: cell.closest('tr').find('td').eq(0).text(),

        price: cell.closest('tr').find('td').eq(1).text(),

        stock: cell.closest('tr').find('td').eq(2).text()

      };

      $.ajax({

        url: '/api/updateRow',

        method: 'POST',

        data: rowData,

        success: function(response) {

          console.log('行更新成功');

        },

        error: function(xhr, status, error) {

          console.error(error);

        }

      });

    });

 

    // 取消修改

    cancelBtn.click(function() {

      editor.val(valueSpan.text());

      editor.hide();

      valueSpan.show();

      saveBtn.hide();

      cancelBtn.hide();

    });

  });

});

登入後複製

這段程式碼首先尋找所有「編輯」按鈕、儲存按鈕和取消按鈕,並在每個「編輯」按鈕的點擊處理程序中新增事件監聽器。在處理程序中,它會尋找所需的元素(值的文字節點、編輯器、儲存按鈕和取消按鈕),顯示編輯模式,並將焦點設定在編輯器上。當使用者點擊儲存按鈕時,處理程序將提交修改,將更新後的值顯示在文字節點中,並向伺服器發送更新請求。當使用者按一下取消按鈕時,處理程序將取消修改並還原初始值。

4. 結論

在這篇文章中,我們了解如何使用JavaScript和一些開源程式庫實作表格資料的線上編輯。我們新增了「編輯」按鈕和儲存按鈕/取消按鈕,使用戶可以輕鬆地在表格中修改數據,並使用jQuery和Ajax向伺服器提交更新。這是一個很好的例子來展示JavaScript以及如何透過使用它的函式庫來改善網頁應用程式的使用者體驗。

以上是使用JavaScript實現表格資料的線上編輯的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板