| 場景 | keyup 行為 | 用戶體驗 |
| 輸入 100 | 輸入 1 → 修正 10 → 用戶繼輸 0 → 修正 10 → 用戶輸 0 → 修正 100 | 數字跳動、無法正常編輯 |
| 刪除重輸 | 每次按鍵觸發修正 | 極難操作 |
| 貼上長數字 | 逐字符觸發 | 閃爍、亂序 |
推薦:blur 事件 + 統一修正邏輯
$(function() {
$("#demo").blur(function() {
var $this = $(this);
var val = $this.val().trim();
// 空值預設 10
if (!val) val = "10";
// 解析整數,非數字預設 10
var num = parseInt(val, 10);
if (isNaN(num)) num = 10;
// 向下取整到 10 的倍數,最小 10
num = Math.max(10, num - (num % 10));
// 寫回輸入框
$this.val(num);
});
});
原生 JS 版(無 jQuery 依賴)
document.getElementById('demo').addEventListener('blur', function() {
var val = this.value.trim();
if (!val) val = '10';
var num = parseInt(val, 10);
if (isNaN(num)) num = 10;
num = Math.max(10, num - (num % 10));
this.value = num;
});
進階:input 事件即時提示(不修改值)
$("#demo").on('input', function() {
var val = $(this).val().trim();
var num = parseInt(val, 10);
if (!isNaN(num)) {
var corrected = Math.max(10, num - (num % 10));
if (corrected !== num) {
$(this).next('.hint').text('將自動修正為 ' + corrected).show();
} else {
$(this).next('.hint').hide();
}
}
}).blur(function() {
// blur 時真正修正
var corrected = Math.max(10, parseInt($(this).val() || 10, 10) - (parseInt($(this).val() || 10, 10) % 10));
$(this).val(corrected);
$(this).next('.hint').hide();
});
HTML 結構建議
<input type="text" id="demo" placeholder="輸入金額(10的倍數)" />
<span class="hint" style="color:#999; font-size:12px; display:none;"></span>
總結
blur 修正值,input 提示預期值**。這樣用戶編輯時不受干擾,失焦時自動修正,體驗最佳。核心邏輯:Math.max(10, num - num % 10) 向下取整到 10 的倍數並保底 10。
- 上一篇文章: JavaScript 登入按鈕事件:提示彈窗與頁面跳轉完整實現
- 下一篇文章: IIS 發布網站報錯「未能寫入輸出文件,目錄名稱無效」完整排查指南
Copyright ©
程式碼之家 All Rights Reserved