首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 輸入框限制為 10 的倍數:blur 驗證優於 keyup 的最佳實踐

     編輯:程式設計綜合問答

需求

輸入框失去焦點時,自動修正值為 10 的倍數(向下取整):輸入 23 → 20,輸入 5 → 10 (最小值),輸入非數字 → 10。

為何不建議 keyup

推薦: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。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景keyup 行為用戶體驗
輸入 100輸入 1 → 修正 10 → 用戶繼輸 0 → 修正 10 → 用戶輸 0 → 修正 100數字跳動、無法正常編輯
刪除重輸每次按鍵觸發修正極難操作
貼上長數字逐字符觸發閃爍、亂序