近期接到一個需求,想讓 Radio 元件變成 Checkbox 的樣子,並保有 Radio 的行為。雖說一群選項僅單選,本應使用 Radio 而不是 Checkbox。不過仔細一下在程式面,也不是無法執行。這邊筆記下實作方法。
內容
思路
1. 使用 <input> 的 Checkbox 類型來實作,這樣就不用模版 Radio 的樣式成為 Checkbox
2. Checkbox 點擊時,會自動讓狀態綁上 checked。因此需改成:當觸發的值和所選的值一樣時,那就中斷現有 Event 的預設行為
3. Vue3 使用 computed,將外部傳入的 modelValue 當作預設值。同時,搭配 onClick, v-bind modelValue 和 update:modelValue 來讓更新的值可以同步
程式碼
參考資料
1. jQuery: make checkboxes act like radio buttons?
按讚加入粉絲團