我的需求很简单 - 我想让用户以理智的方式输入货币值,这意味着:
12345
会产生12345
而不是123.45
1234.5
会产生1234.5
而不是123.45
。粘贴1234.0
应该产生1234
或1234.0
或1234.00
- 任何一个都有效,但我猜中间的应该是最简单的。.
必须是显式且可选的。即用户可以键入12345
,或者用户可以键入123.45
。这两个输入产生不同的值 - 请参阅前两项。123
和1234
以及12345
和12.3
都是有效的输入。123.
。,
除以数千,数百万等... I.e。 1234567.8
将显示为1,234,567.8
此类输入的正则表达式(省略逗号)将为/^[1-9]\d*(\.\d{0,2})?$/
(请注意.
可以是最后一个字符。)
现在,我尝试了几个jQuery插件,它们似乎是网络上最受欢迎的插件。不幸的是,这两个人都不符合要求:
http://www.meiocodigo.com/projects/meiomask/
不知道如何强制执行1,2和3:http://jsfiddle.net/mark69_fnd/gKuaH/
http://digitalbush.com/projects/masked-input-plugin/
不知道如何强制执行1,2,3和4.粘贴行为很奇怪。 http://jsfiddle.net/mark69_fnd/jF86D/
http://akzhan.github.com/jquery-keyfilter/
根本不适合这个特定任务,因为正则表达式似乎应用于每个角色,而不是整个输入:http://jsfiddle.net/mark69_fnd/uj9ZK/
我的约束是如此非凡吗?我不这么认为。任何人都可以建议替代所考虑的插件,以满足所有约束吗?
感谢。
修改
Robin Herbots的实施 - https://github.com/RobinHerbots/jquery.inputmask。看起来非常有趣,看起来除了奖金之外都支持所有内容。仍在检查 - http://jsfiddle.net/mark69_fnd/KW4qn/
EDIT2
不幸的是,https://github.com/RobinHerbots/jquery.inputmask有一些问题。例如,它在扩展文件中定义了几个有用的输入掩码,但我无法理解它是如何工作的(但我可能只是愚蠢的)。然而,它似乎也破坏了我的造型。由我的css声明为居中对齐的数字字段变为右对齐。尽管我理解这个推理,但这是不可接受的。简而言之,没有爱。
答案 0 :(得分:0)
您可以像这样禁用对齐。
$('#test').inputmask('decimal', { rightAlignNumerics: false });
- )
答案 1 :(得分:0)
见plnkr。
http://plnkr.co/edit/OE6PGTuCvQa380S7b8Zg?p=preview
它通过jquery.simulate
验证每个按键的正则表达式我不知道如何根据您的需要构建正则表达式,但是掩码工具和模拟是你所追求的。