是否有一个好的jquery插件用于屏蔽/正则表达式输入?

时间:2012-08-31 18:13:39

标签: jquery maskedinput

我的需求很简单 - 我想让用户以理智的方式输入货币值,这意味着:

  1. 粘贴整数会产生一个整数,即粘贴12345会产生12345而不是123.45
  2. 粘贴小数值会产生相同的值,即粘贴1234.5会产生1234.5而不是123.45。粘贴1234.0应该产生12341234.01234.00 - 任何一个都有效,但我猜中间的应该是最简单的。
  3. 小数分隔符.必须是显式且可选的。即用户可以键入12345,或者用户可以键入123.45。这两个输入产生不同的值 - 请参阅前两项。
  4. 输入不是固定大小。即1231234以及1234512.3都是有效的输入。
  5. 应该阻止粘贴错误的输入。优选地,通过简单地删除有问题的字符。
  6. 也应该阻止输入错误的输入。这意味着有效输入的任何前缀都应该是有效的。因此,允许输入/粘贴123.
  7. 作为奖励,开发人员应该能够指定显示整数部分,除以数千,数百万等... I.e。 1234567.8将显示为1,234,567.8
  8. 此类输入的正则表达式(省略逗号)将为/^[1-9]\d*(\.\d{0,2})?$/(请注意.可以是最后一个字符。)

    现在,我尝试了几个jQuery插件,它们似乎是网络上最受欢迎的插件。不幸的是,这两个人都不符合要求:

    我的约束是如此非凡吗?我不这么认为。任何人都可以建议替代所考虑的插件,以满足所有约束吗?

    感谢。

    修改

    Robin Herbots的实施 - https://github.com/RobinHerbots/jquery.inputmask。看起来非常有趣,看起来除了奖金之外都支持所有内容。仍在检查 - http://jsfiddle.net/mark69_fnd/KW4qn/

    EDIT2

    不幸的是,https://github.com/RobinHerbots/jquery.inputmask有一些问题。例如,它在扩展文件中定义了几个有用的输入掩码,但我无法理解它是如何工作的(但我可能只是愚蠢的)。然而,它似乎也破坏了我的造型。由我的css声明为居中对齐的数字字段变为右对齐。尽管我理解这个推理,但这是不可接受的。简而言之,没有爱。

2 个答案:

答案 0 :(得分:0)

您可以像这样禁用对齐。

$('#test').inputmask('decimal', { rightAlignNumerics: false }); 

- )

答案 1 :(得分:0)

见plnkr。

http://plnkr.co/edit/OE6PGTuCvQa380S7b8Zg?p=preview

它通过jquery.simulate

验证每个按键的正则表达式

我不知道如何根据您的需要构建正则表达式,但是掩码工具和模拟是你所追求的。