iT邦幫忙

2024 iThome 鐵人賽

DAY 25
1
Modern Web

元素不可思議事件簿系列 第 25

Day 25 - 是時候做一些改變了

  • 分享至 

  • xImage
  •  

img

圖片來源:派星機
好久不見派星機(沒有好久

前篇閱畢或有疑惑,若輸入之符文不需啟動IME,如輸入英文、數字、符號等,此時何解?故本篇紀錄其他與輸入有關之不可思議事件:change事件。

事件其廿八:change

此事件發生於<input><select> <textarea> 等元素之值遭受更改之時。例如核箱型態之<input>元素 (<input type="checkbox">) 於鼠輩確認或取消確認時觸發change事件;單選型態之<input>元素 (<input type="radio">) 於鼠輩選取時觸發change事件;文字輸入型態之元素 (例如<text><textarea>...),於值更改後失去矚目之時觸發change事件。

MDN:
The change event is fired for <input>, <select>, and <textarea> elements when the user modifies the element's value.

以下示例改造前篇之示例,試用觀測change事件使介面顯示正在輸入訊息之提示。

const statusText = document.querySelector(".text");
const textarea = document.querySelector(".textarea");

function showStatus() {
  statusText.style.display = "block";
}

textarea.addEventListener("change", showStatus);

修改之術式註釋如下:
設定事件觀測器於文字輸入處元素觀測change事件,並施以showStatus函式之術。

textarea.addEventListener("change", showStatus);

然結果為輸入完畢後,鼠輩點按文字輸入處元素以外之處,使文字輸入處元素取消受矚之時,才於文字輸入處下方顯示「正在輸入訊息」之狀態提示,不符世人之常觀。
img

change事件較適於檢測最終輸入之結果。

因此改觀測keydown事件並施以showStatus函式之術,並觀測change事件並施以hideStatus函式之術。

textarea.addEventListener("keydown", showStatus);
textarea.addEventListener("change", hideStatus);

當鍵石於文字輸入處元素受力時,於文字輸入處下方顯示「正在輸入訊息」之狀態提示,輸入完畢後,鼠輩點按文字輸入處元素以外之處,使文字輸入處元素取消受矚之時,使「正在輸入訊息」之狀態提示消失。
img

示例處

而單使文字輸入處元素受矚,無更改內容,則不顯示狀態提示。
img

示例之術式

https://github.com/CReticulata/2024ithome/tree/main/Day25

翻譯

元素:element
鼠輩:滑鼠
矚目:focus
鍵石:鍵盤按鍵

相關連結


上一篇
Day 24 - 使用精靈語的我們難道都很長壽
下一篇
Day 26 - 如果喜歡講話算是輸出
系列文
元素不可思議事件簿30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
++
iT邦新手 4 級 ‧ 2024-10-09 00:12:14

https://ithelp.ithome.com.tw/upload/images/20241009/20169139frvTOstuuh.jpg
看起來是同一集

橘子 iT邦新手 4 級 ‧ 2024-10-09 09:50:28 檢舉

無法辨識這是誰講的話XDDD

++ iT邦新手 4 級 ‧ 2024-10-09 11:37:56 檢舉

https://ithelp.ithome.com.tw/upload/images/20241009/201691391qsaEBcQ9L.jpg

我要留言

立即登入留言