如何定制屏蔽输入jQuery插件

如何定制屏蔽输入jQuery插件,jquery,mask,masking,maskedinput,Jquery,Mask,Masking,Maskedinput,我正在使用来自的jQuery掩码插件 我想自定义我的插件,并已尽我最大的努力去做,但我不能 我想要的是 我只能输入数字 每第三个数字后,所有数字将自动格式化(,) (.)后面只有两位数 我正在使用这个面具: $("#product").mask("999,999,999.99",{placeholder:" "}); 问题是如果我只需要输入150.50,我需要将光标放在准确的位置并输入 例如,在上面的掩码中,如果我键入150.50,文本框如下所示: []、[]、150.50其中[]是一个空格

我正在使用来自的jQuery掩码插件

我想自定义我的插件,并已尽我最大的努力去做,但我不能

我想要的是

  • 我只能输入数字
  • 每第三个数字后,所有数字将自动格式化(,)
  • (.)后面只有两位数
  • 我正在使用这个面具:

    $("#product").mask("999,999,999.99",{placeholder:" "});
    
    问题是如果我只需要输入150.50,我需要将光标放在准确的位置并输入

    例如,在上面的掩码中,如果我键入150.50,文本框如下所示:
    []、[]、150.50
    其中[]是一个空格。我想要的只是 显示150.50,无额外(,)s.

    如果我键入1150.50,则显示1150.50,但我希望在键入后自动进行格式化,并且不希望显示任何额外的(,)s.

    您不需要屏蔽插件,而是格式化插件


    看看

    你不想要屏蔽插件,而是格式化插件


    看看

    加比的答案是正确的,提供的选项比我的多得多。然而,我为您的具体需求制定了一个解决方案。查看它

    $('input').bind('keyup blur',function(){
    变量i,j,final='',input=$(此),
    raw=input.val().replace(/[^\d]/g',);
    while(raw.substr(0,1)=='0'&&raw.length>2){//对于大的数字,删除前导0
    原始=原始子序列(1);
    }
    而(raw.length<2){//对于小数字,最多可使用两个0填充
    原始='0'+原始;
    }
    
    对于(i=1;iGaby的答案是正确的,并且提供了比我多得多的选项。但是,我为您的特定需求制定了一个解决方案。查看它

    $('input').bind('keyup blur',function(){
    变量i,j,final='',input=$(此),
    raw=input.val().replace(/[^\d]/g',);
    while(raw.substr(0,1)=='0'&&raw.length>2){//对于大的数字,删除前导0
    原始=原始子序列(1);
    }
    而(raw.length<2){//对于小数字,最多可使用两个0填充
    原始='0'+原始;
    }
    
    对于(i=1;i如果用户输入“5”,你希望它显示“.05”吗?@adam谢谢如果用户输入5,它应该是5.00,那么如果用户输入“5”、“0”和“3”,它如何实现“5.03”(根据需要)?这不会错误地产生“500.03”吗?如果用户输入“5”,你希望它显示“.05”?@adam谢谢如果用户输入5,它应该是5.00,那么如果用户输入“5”、“0”和“3”,它是如何实现“5.03”(根据需要)的?这不会产生错误的“500.03”吗?谢谢adam这是很好的解决方案谢谢adam这是很好的解决方案
    $('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);
    });