【问题标题】:How to customize the Masked Input jQuery plugin如何自定义 Masked Input jQuery 插件
【发布时间】:2010-07-25 09:28:47
【问题描述】:

我正在使用来自

的 jQuery 掩码插件

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

我想自定义我的插件,并已尽力做到这一点,但我做不到。

我想要的是

  1. 我只能输入数字。
  2. 所有数字将在每第三个数字后自动格式化 (,)。
  3. (.) 后面只有两位数

我正在使用这个面具:

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

问题在于,如果我只需要输入 150.50,我需要将光标放在确切的位置并输入。

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

【问题讨论】:

  • 如果用户输入“5”,你想让它显示“.05”吗?
  • @adam 感谢用户输入 5 它应该是 5.00
  • 那么如果用户键入“5”、“0”和“3”,如何实现“5.03”(根据需要)?这不会错误地产生“500.03”吗?

标签: jquery mask masking maskedinput


【解决方案1】:

Gaby 的回答是正确的,并且提供了比我更多的选择。但是,我为您的特定需求准备了一个解决方案。查看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);
});

【讨论】:

  • 感谢亚当,这是很好的解决方案
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    相关资源
    最近更新 更多