在 Day 10 完成了自訂鍵盤的安全回溯與快照系統後,使用者開始關注實務計算中最常見的稅率處理——含稅與未稅的即時切換,以及針對不同幣別的稅率記憶。現有的單向稅率按鍵已無法滿足跨國電商與多幣別帳務的需求。
今日聚焦於「TAX+ / TAX‑」雙向稅率核心實作,並加入長按 TAX 鍵呼叫快速設定 Modal(Casio SET 模式),讓使用者可在鍵盤上即時切換稅率、保存各國稅率配置,並透過持久化機制在重新啟動後自動載入。
線上體驗 Live Demo:https://410355-collab.github.io/Premium-Business-Calculator/
(強烈建議使用 iPhone Safari 或 Android 手機開啟體驗!)
GitHub 開源倉庫:https://github.com/410355-collab/Premium-Business-Calculator
歡迎提出建議與指導
(開發環境:Google Antgravity IDE + Google Gemini 協同開發)
使用者在同一筆計算中可能同時需要含稅與未稅結果,且不同國家稅率各不相同,若僅透過手動輸入會造成效率低下與錯誤。
傳統鍵盤缺少快速設定入口,使用者必須跳至設定頁面手動調整稅率,流程斷裂。
瀏覽器關閉或切換裝置後,先前設定的稅率會遺失,造成重複操作。
tax_plus / tax_minus)在 script.js 中為 +TAX 與 ‑TAX 定義了專屬的 UI 與行為:
// script.js – 税率按鍵 UI 與行為
'tax_plus': {
customHTML:
'<span class="key-text" style="font-size:30cqmin;display:flex;flex-direction:column;line-height:0.95;">' +
'<span>+TAX</span>' +
'<span style="font-size:16cqmin;opacity:0.8;">▲</span>' +
'</span>',
action: 'applyTaxAdd',
type: 'cyan',
category: 'biz',
name: '+TAX'
},
'tax_minus': {
customHTML:
'<span class="key-text" style="font-size:30cqmin;display:flex;flex-direction:column;line-height:0.95;">' +
'<span>‑TAX</span>' +
'<span style="font-size:16cqmin;opacity:0.8;">▼</span>' +
'</span>',
action: 'applyTaxSubtract',
type: 'cyan',
category: 'biz',
name: '‑TAX'
},
在 script.js 為 tax_plus、tax_minus 之 action 內部加入長按偵測,呼叫 showTaxModal():
function applyTaxAdd() {
if (isLongPress()) {
showTaxModal('add');
return;
}
// 含稅 (+TAX) 正常計算路徑
updateTaxState('include');
}
function applyTaxSubtract() {
if (isLongPress()) {
showTaxModal('subtract');
return;
}
// 未稅 (‑TAX) 正常計算路徑
updateTaxState('exclude');
}
使用 localStorage 以 {currency}-{rate} 的鍵值格式存儲,每次開啟應用時自動載入:
function saveTaxRate(currency, rate) {
localStorage.setItem(`taxRate-${currency}`, rate);
}
function loadTaxRate(currency) {
return parseFloat(localStorage.getItem(`taxRate-${currency}`)) || defaultRate;
}
script.jstax_plus、tax_minus 按鍵 UI 與 applyTaxAdd/applyTaxSubtract 行為isLongPress() 判斷長按時長(≥ 600 ms)並呼叫 showTaxModal
saveTaxRate / loadTaxRate 實作稅率持久化quickCandidates 陣列中加入 tax_plus、tax_minus 以支援快速鍵盤候選經過多次手機實測,600 ms 的長按門檻在 iOS Safari 與 Android Chrome 上均能穩定觸發,且不會與普通點擊混淆。使用 touchstart 與 touchend 事件配合 setTimeout 實作。
customHTML 內使用 cqmin 單位確保在不同裝置 DPI 下文字大小保持一致;font-size:30cqmin 與 font-size:16cqmin 分別呈現主標題與小圖示,配合 display:flex;flex-direction:column 形成上下結構。
updateTaxState 內根據當前 taxMode(include / exclude)在運算式中自動插入乘除係數 (1 + rate/100) 或除以同樣係數,保證含稅與未稅結果在同一筆計算中保持精確對稱。
本日完成了雙向稅率核心與長按設定模式的全套實作,讓自訂鍵盤在跨國電商與多幣別環境中具備即時含稅/未稅切換、快速稅率設定以及持久化記憶功能。透過簡潔的 UI、可靠的長按偵測與輕量級的 localStorage 持久化,我們將稅務計算的繁瑣步驟壓縮至單鍵操作,提升了使用者的工作效率與體驗。
在 Day 12,我們將推出商務特化的「‑% 折扣」一鍵計算、正負號即時反轉 (±) 以及雙零/三零快速輸入機制,讓大額商務金額與折扣計算同樣可以在鍵盤上瞬間完成,並透過狀態機保護語法正確性。敬請期待我們如何以最小的鍵位組合支援複雜的商務計算需求。