owned this note changed 2 months ago
Linked with GitHub

🗞 8/20 (五) - 取消表單預設效果

tags: JavaScript 必修篇 - 前端修練全攻略

本日對應章節為:DOM - 選取網頁元素、Event 事件 - 讓您的網頁具有互動效果。

觀念複習

preventDefault (參考章節)

取消 HTML 標籤的預設行為,以下為示範:
HTML:

<a class="myLink" href="https://www.hexschool.com/">連結</a>

JavaScript:

//先透過 querySelector 選取 class myLink const myLink = document.querySelector(".myLink"); //監聽使用者點擊就會執行大括號的內容 myLink.addEventListener('click',function(e){ e.preventDefault();//阻止 a 標籤默認行為,所以不會轉址 console.log("有被點擊到"); })

觀念補充

表單預設行為

如果使用 <input type="submit"> submit ,或是使用 <button></button> 但不指定 type 屬性時預設也會是 submit,而 submit 會將表單提交到伺服器。
我們通常不會使用這個方式提交表單給伺服器,所以會使用 preventDefault 取消它的預設行為,範例如下:
HTML:

<form action="#"> 帳號: <input type="text" name="email"> <br> 密碼: <input type="text" name="passward"> <input type="submit" value="送出"> </form>

JavaScript:

//先透過 querySelector 選取 form const form = document.querySelector("form"); //監聽使用者點擊就會執行大括號的內容 form.addEventListener("click", function (e) { e.preventDefault();//阻止 submit 屬性默認行為,所以不會提交資料 });

問題

情境題:小龜在路上走著走著,被熱情的艾草給攔住了。

艾草:「同學,請問你信教嗎?」

小龜:「 ?」

艾草:「現在信教就能立刻擁有能吃的肥皂,真是太神奇了#*$&@8(#&(下略一萬字)。」

小龜:「好了,你別說話了。我信還不行嗎?我信!我信!」

艾草:「來這個是入教申請表格,填寫完後,我們就可以頒發證書給您囉!」

小龜拿起來表格,標題上大大的寫著:「你該轉職成可愛鳥鳥教徒的一萬種理由!」

請同學 fork 這個 👉 範例,依步驟指引完成表單,讓小龜擺脫傳教士的威脅吧!

/* 步驟一 */ //請透過 querySelector 選取下方 5 個 HTML 標籤 //<input type="text" class="form-control" id="input-name" value="小龜"> //<input type="numbr" class="form-control" id="input-age" value="1987年2月30日"> //<span class="name"></span> //<p class="birthday border-bottom pb-1"></p> //<button type="submit" class="send btn btn-light btn-lg">送出</button> /* 步驟二 */ //請利用步驟一選取的 button 送出按鈕 //透過 addEventListener 監聽 'click' 事件 /* 步驟三 */ //請注意:以下步驟皆在步驟二監聽函式的{}大括號內處理 //使用 e.preventDefault() 阻止 submit 效果 //使用 .value 的方式取出步驟一選取的 input id="input-name" 欄位值 //將 input 欄位的值,使用 textContent 的方式,賦予到步驟一選取的: //<span class="name"></span> //使用 .value 的方式取出步驟一選取的 input id="input-age" 欄位值 //將步驟一選取的 <p class="birthday border-bottom pb-1"></p> //使用 innerHTML 輸出: <span class="birthday">出生日期:${id="input-age欄位值}</span>

回報流程

將答案寫在 CodePen 複製 CodePen 連結貼至下方作業投稿區中回報就算完成了喔!

作業投稿區(學員自行投稿)

  1. 範例投稿(可點此連結觀看解答)
  2. Shelly
  3. 小韭菜
  4. Shoppingq
  5. InchIK
  6. Bucky
  7. 肉鬆
  8. wendy
  9. Nyx
  10. Allen Lin
  11. Lucien
  12. Yunei
  13. 予予
  14. Betty
  15. Rain Liao
  16. Wei
  17. JuneFish
  18. 陳sam
  19. LMY
  20. Jack
  21. 詠銓
  22. Chiang
  23. teddy wu
  24. Howard
  25. Bear
  26. timothy80617
  27. Arista
  28. Joe Kuo
  29. Sandy
  30. Yu Sung
  31. 黃士桓
  32. 佳鈴
  33. janice
  34. 群嘉
  35. axlrock1021
  36. Jane Lin
  37. Nick
  38. wind
  39. Ulysses
  40. LALA
  41. 中年大叔
  42. Eva
  43. curry
  44. 草皮
  45. Izumi 泉
  46. DoraYu
  47. Wilson Han
  48. Yiren
  49. LOMO
  50. Amber_Lin
  51. 皮皮
  52. 番茄
  53. AmberCYT
  54. shehome
  55. Hedy
  56. 乃萱
  57. andersonshen
  58. Susan
  59. 肉魚
  60. Allensph
  61. yojanni
  62. YinChenCheng
  63. colinhyun
  64. 安迪
  65. Mimino
  66. Jung
  67. Peter
  68. Eileen
  69. PeggyTsai
  70. Joy Cheng
  71. LucieW
  72. Gill
  73. kimn
  74. WA
  75. Tim
  76. else
  77. betty Chen
  78. Sunny
  79. Tina Yen
  80. BrunoYu
  81. RuoAn
  82. 庭瑋
  83. JimmyFang
  84. Jay
  85. 沈依蓉
  86. Min
  87. Alice
  88. GaryYang
  89. int Huang
  90. Peihan Wang
  91. JackC
  92. Cindy Huang
  93. shio
  94. Cliff
  95. 0808jessie
  96. Winnie
  97. Cary
  98. amy
  99. Anna
  100. Alex
  101. piha
  102. sasimi
  103. qoq77416416
  104. Eden
  105. yunifer
  106. chih
  107. KiKi
  108. HaoJing
  109. wei
  110. Hua
  111. ABEI
  112. yuhao
Select a repo