簡體   English   中英

輸入數字時的貨幣掩碼和格式設置

[英]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;
  }
});

https://jsfiddle.net/apxh4eL2/1/

感謝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);
});

演示: https : //jsfiddle.net/apxh4eL2/9/

嘗試探索JqueryMask插件,它具有屏蔽很多很多選項- https://igorescobar.github.io/jQuery-Mask-Plugin/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM