これが私がやりたいことです:
これまでに見つけたものはすべて、小数点以下2つのゼロ、または数千のコンマで通貨をマスクすることでした。これは、すでに方法を知っています。
ユーザーが入力するときに、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;
}
});
コメントで私の質問にほとんど答えてくれたJitendraSoftgridに感謝します。より多くの条件をキャッチするようにコードを変更しました。以下は私が使用した最終バージョンです。これが他の誰かに役立つことを願っています。
$(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);
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加