JQuery allow only two numbers after decimal point

前端 未结 7 914
春和景丽
春和景丽 2020-12-02 10:31

I found the following JQuery function here which prevents a user from entering anything that\'s not a number or a single decimal. The function works well but I\'d like to i

7条回答
  •  借酒劲吻你
    2020-12-02 11:20

    I have updated this routine to allow standard editing features as these were prevented in the above code. (This routine is just for processing a float but can be adapted to allow only 2 digits after the decimal)

    var value = $(this).val().toString();
    
    // Allowed Keys
    if (event.which === 8 || event.which === 46 // Character delete
        || event.which === 16 || event.which === 17 // Modifier Key
        || event.which === 37 || event.which === 39  // Arrow Keys
        || (event.key.toLowerCase() === "a" && event.ctrlKey) // Select All
        || (event.key.toLowerCase() === "c" && event.ctrlKey) // Copy
        || (event.key.toLowerCase() === "x" && event.ctrlKey) // Cut
        || (event.key.toLowerCase() === "v" && event.ctrlKey) // Paste
        || (event.which === 45 && event.ctrlKey) // Old school copy (CTRL + INSERT)
        || (event.which === 46 && event.shiftKey) // Old school cut (SHIFT + DELETE)
        || (event.which === 45 && event.shiftKey) // Old school paste (SHIFT + INSERT)
        || (event.which === 35) // END
        || (event.which === 36) // HOME
        || (event.which === 35 && event.shiftKey) // SHIFT + END
        || (event.which === 36 && event.shiftKey) // SHIFT + HOME
        )
    {
        return;
    }
    else if (event.which === 190) // Process decimal point
    {
        if (value == "" || value.indexOf(".") > -1)
        {
            event.preventDefault();
        }
    }
    else if (event.which < 48 || event.which > 57 || event.ctrlKey || event.shiftKey) // Reject anything else that isn't a number
    {
        event.preventDefault();
    }
    

提交回复
热议问题