这就是我想要做的:
到目前为止,我发现的所有内容都只是在小数点后用两个零点掩盖货币,或者是数千个逗号,我已经知道该怎么做。
我需要能够在用户输入时以货币格式附加数字,以0.00为起点。我需要对几个输入做这个。我想我需要跟踪用户为每个输入输入的所有数字。我甚至不确定如何最好地接近这一点。我怎么能这样做?
我把一些东西放在一起作为我的例子,但它非常准确。
<Image />
答案 0 :(得分:3)
感谢Jitendra Softgrid在评论中回答了我的问题。我修改了代码以捕获更多条件。以下是我使用的最终版本。我希望这有助于其他人。
$(document).on('input',':input',function() {
var v = this.value, dollar = '0', cents = '00';
if (v.indexOf('.') !== -1) {
var price = v.split('.');
dollar = price[0] || '0';
cents = price[1] || '00';
}
if (cents.length === 1) {
if (dollar) {
var dollarNumbers = dollar.split('');
var dollarLength = dollarNumbers.length;
cents = dollarNumbers[dollarLength-1]+cents;
dollar = '';
for (var i = 0; i < dollarLength-1 ; i++) {
dollar += dollarNumbers[i];
}
if (!dollar) {dollar = '0';}
}
}
if (v.length === 1) {
cents = '0'+v;
}
if (cents.length === 3) {
var centNumbers = cents.split('');
dollar = dollar === '0' ? centNumbers[0] : dollar+centNumbers[0];
cents = centNumbers[1]+centNumbers[2];
}
this.value = dollar+'.'+cents;
});
https://jsfiddle.net/apxh4eL2/4/
2019编辑:
过了一会儿,我想出了一个更清洁的解决方案。
$(document).on('input',':input',function(event) {
this.value = parseFloat(this.value.replace(/(.*){1}/, '0$1').replace(/[^\d]/g, '').replace(/(\d\d?)$/, '.$1')).toFixed(2);
});
答案 1 :(得分:0)
尝试探索JqueryMask插件,它有很多掩盖选项 - https://igorescobar.github.io/jQuery-Mask-Plugin/