[英]Currency masking and formatting when entering numbers
這就是我想做的:
到目前為止,我發現的所有內容只是簡單地用小數點后的兩個零掩蓋了貨幣,或者是數千個逗號(我已經知道怎么做)。
用戶輸入時,我需要能夠以貨幣格式附加數字,以0.00開頭。 我需要對多個輸入執行此操作。 我想我將需要跟蹤用戶為每個相應輸入輸入的所有數字。 我什至不確定如何最好地解決這個問題。 我怎樣才能做到這一點?
我把一些東西放在一起作為例子,但它的准系統。
Sale $<input type="text" value=""><br>
Tax $<input type="text" value="">
$(document).on('input',':input',function() {
if (this.value.length === 1) {
this.value = '0.0'+this.value;
}
});
感謝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);
});
嘗試探索JqueryMask插件,它具有屏蔽很多很多選項- https://igorescobar.github.io/jQuery-Mask-Plugin/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.