在填充美元之前添加每个输入值(以美分为单位)

问题描述 投票:0回答:1

我有一个角度输入字段,我试图让它像 ATM 一样工作。基本上,我希望输入的第一个数字是小数十位,第二个数字是小数个位,第三个数字是个位,第四个数字是十位,第五个数字是百位,依此类推。

例如,如果用户输入 10,则将更改为 0.10,530 将变为 5.30,7 将变为 0.07,3850 将变为 38.50。

无论我尝试什么,我都无法让货币管道工作,在进行研究时,我发现了一些可以工作并且可以实现我想要的功能的东西,但有一个问题。以下 html 输入是我的:

 <input *ngIf="selectedState === 'amount'" type=number step=0.01 class='name-input' id='priceEntry' name='priceEntry' placeholder="Enter Amount" (keyup)="onAmountChange($event)" [(ngModel)]="inputValue" oninput="this.value=parseInt(this.value.replace('.',''))/100">

问题是,虽然这工作得很好,但我遇到的问题是,一旦插入 0,它就不会增加单位。在上面的 html 中,如果我输入 100,它会将其更改为 .1 并且不会添加余数零。同样,无论我加多少次零,都不会超过小数。其他所有数字都工作正常。有人可以帮我解决这个问题吗?我有什么遗漏的吗?有更好的替代方案吗?

javascript html angular typescript currency
1个回答
0
投票

当输入 100 时,parseInt('100') 变为 100,除以 100 时得到 1.00。但是,如果您输入 0100,parseInt('0100') 会变成八进制的 64(基数 8),而不是您预期的 100。

<input *ngIf="selectedState === 'amount'" type="number" step="0.01" class="name-input" id="priceEntry"
  name="priceEntry" placeholder="Enter Amount" (input)="onAmountChange($event)"
  [(ngModel)]="inputValue" oninput="this.value = parseFloat(this.value.replace('.', ''))/100">
© www.soinside.com 2019 - 2024. All rights reserved.