首页 文章

如何自定义Masked Input jQuery插件

提问于
浏览
0

我正在使用jQuery mask插件

http://digitalbush.com/projects/masked-input-plugin/

我想自定义我的插件,并尽我所能,但我不能 .

我想要的是

  • 我只能输入数字 .

  • 所有数字将在每第3个数字后自动格式化(,) .

  • ( . )后只有两位数

我正在使用这个面具:

$("#product").mask("999,999,999.99",{placeholder:" "});

这个问题是如果我只需要输入150.50,我需要将光标放在确切的位置和类型上 .

例如,在上面的掩码中,如果我键入150.50,则文本框如下所示: [][][],[][][],150.50 其中[]是空格 . 我想要的只显示150.50,没有额外的(,)s .
如果我输入1150.50然后显示1,150.50,但我希望格式化在我完成输入后自动发生,并且不想显示额外的任何(,)s .

2 回答

  • 1

    你不想要一个masking插件,而是一个格式化插件..

    看看http://plugins.jquery.com/project/number_format

  • 2

    盖比的答案是正确的,并提供了比我更多的选择 . 但是,我为您的特定需求制定了解决方案 . 查看here .

    $('input').bind('keyup blur', function(){
        var i, j, final = '', input = $(this),
            raw = input.val().replace(/[^\d]/g, '');
        while (raw.substr(0, 1) === '0' && raw.length > 2) { //remove leading 0s for large numbers
            raw = raw.substr(1);
        }
        while (raw.length < 2) { //pad with up to two 0s for small numbers
            raw = '0' + raw;
        }
        for (i = 1; i <= raw.length; i++) { //format the number as ##,###,###.##
            j = raw.length - i;
            final =
                (i === 2 ? '.' : ((i + 1) % 3) === 0 && i != raw.length ? ',' : '')
                + raw.substr(j, 1)
                + final;
        }
        input.val(final);
    });
    

相关问题