使用jQuery / javascript来限制价格字段输入

时间:2011-03-15 13:39:34

标签: javascript jquery

我在互联网上找到了以下jQuery代码,但我很快发现它有一个缺点,即它不接受小数点(ascii代码46) - 即使代码似乎允许它。

目前,我无法输入1.23之类的价格,因为这段时间被忽略了,我得到了123.

有人能发现这不起作用吗?

// Numeric only control handler
$.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;

            // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
            return (
                key == 8 ||
                key == 9 ||
                key == 46 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        })
    })
};

我正在使用这样的插件:

$(function(){
  $('#price_field').ForceNumericOnly();
});

5 个答案:

答案 0 :(得分:1)

其他用户已经回答了你的问题,但我想为你提供这个链接。

http://unixpapa.com/js/key.html

我发现在处理键盘事件并使它们跨浏览器兼容时非常有用。

我希望这会有所帮助。

答案 1 :(得分:0)

您应该添加密钥代码190以接受“。”

// Numeric only control handler
$.fn.ForceNumericOnly = function() {
return this.each(function()
{
    $(this).keydown(function(e)
    {
        var key = e.charCode || e.keyCode || 0;

        // allow dot, backspace, tab, delete, arrows, numbers and keypad numbers ONLY
        return (
            key == 190 ||  
            key == 8 ||
            key == 9 ||
            key == 46 ||
            (key >= 37 && key <= 40) ||
            (key >= 48 && key <= 57) ||
            (key >= 96 && key <= 105));
    })
})
};

答案 2 :(得分:0)

两个小数点都需要包含190和110.

答案 3 :(得分:0)

// Numeric only control handler
$.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;

            // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
            return (
                key == 190 ||    //add this line. 190 is the keycode for a period
                key == 110 ||    //and this line. 110 is the keycode for a decimal
                key == 8 ||
                key == 9 ||
                key == 46 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        })
    })
};

答案 4 :(得分:0)

只需将.(代码190和110)添加到支票:

// Numeric only control handler
$.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;

            // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
            return (
                key == 8 ||
                key == 9 ||
                key == 46 ||
                key == 190 ||   // normal .
                key == 110 ||   // keypad .
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        })
    })
};