Radio Button 事件切換實作


Posted by Nacho on 2020-11-14

前言

最近接觸付款頁面的設計,原先系統已提供兩種付款方式(國內信用卡與ATM),並透過點擊不同支付方式的 radio button 切換付款顯示的介面!因為要新增國外信用卡的功能,需要理解原先的做法,且以往都是以 button group 的設計介面切換,這次用 radio button 來做這種切換功能倒是第一次!順便紀錄幾個當時採坑的觀念

注意 change 不需要 preventDefault

preventDefault 是什麼呢?它是預防觸發瀏覽器預設事件的方法,例如預防按鈕、超連結點擊後跳轉到其他頁面。這個方法常用在 clickEvent,但對 changeEvent 不 work。
有人解釋說是 changeEvent 處理的事已經發生的行為,而 clickEvent 處理正在發生的行為,所以已經發生的行為是無法預防,能預防的只有正要發生的事!
另一個解釋是 changeEvent 的 cancelable 的屬性是 false,這意思是事件本身是無法取消的,只有在事件的 cancelable 是 true 的狀況下,preventDefault 才有作用!

$("#text1").change(function(e) {
    alert(e.cancelable?"Is cancelable":"Not cancelable");
});

”preventDefault() not working for change event“的討論

注意 disabled radio button

有時候你想在某些情境下,限制使用者修改表單上的某些欄位,如果是 input 欄位可以加上 readonly 屬性,等同在欄位上加了鎖,且只有 input 和 textarea 擁有 readonly 的屬性。
如果你想鎖住像 button, select, radio button, checkbox,方法就是使用 disabled 屬性,注意 disabled 的按鈕,它的 value 是無法隨著表單一起 submit 的,但 readonly 沒有這個限制!

// 在 jquery 將未選取的 radio butoon 鎖起來
$('input[type=radio][name="your-name"]:not(:checked)').attr('disabled', true);

簡單示範 Radio 事件切換

  • 以 jquery 實作 radio button 的 changeEvent
  • 以 jquery 實作簡單的表單欄位檢查
  • 以 jquery 實作表單輸入欄位與按鈕鎖定

#html #jquery #前端 #事件處理







Related Posts

MTR04_0622

MTR04_0622

模組化與 library

模組化與 library

淺談 React 專案的測試

淺談 React 專案的測試


Comments