做財務的東西總是比較有挑戰的,效能,易用性,準確性都有很高要求,包括一些小的細節。
比如金額需要顯示的時候轉換成有千分位,小數點後保留2位等。去編輯的時候,又要格式化,把逗號都去掉。網上找了段代碼,但是再次編輯會有問題,修改了一下,代碼如下:
- function outputMoney(number) {
- number=number.replace(//,/g,"");
- if (isNaN(number)||number=="") return "";
- number = Math.round( number*100) /100;
- if(number<0)
- return '-'+outputDollars(Math.floor(Math.abs(number)-0) + '') + outputCents(Math.abs(number) - 0);
- else
- return outputDollars(Math.floor(number-0) + '') + outputCents(number - 0);
- }
- function outputDollars(number)
- {
- if (number.length<= 3)
- return (number == '' ? '0' : number);
- else
- {
- var mod = number.length%3;
- var output = (mod == 0 ? '' : (number.substring(0,mod)));
- for (i=0 ; i< Math.floor(number.length/3) ; i++)
- {
- if ((mod ==0) && (i ==0))
- output+= number.substring(mod+3*i,mod+3*i+3);
- else
- output+= ',' + number.substring(mod+3*i,mod+3*i+3);
- }
- return (output);
- }
- }
- function outputCents(amount)
- {
- amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
- return (amount<10 ? '.0' + amount : '.' + amount);
- }
用法:
<input name="TRANS_AMOUNT" type="text" id="TRANS_AMOUNT" size="15" onblur="this.value=outputMoney(this.value);" />