2012-07-26 51 views
2

我有一個表單,我試圖在某些輸入字段中自動實施小數。基本上我希望用戶不要擔心格式,但只需將字段格式化在Blur上即可。JS或PHP將前導零添加到小數

這裏是什麼,我希望達到的幾個例子:

1)如果用戶輸入「0.95」什麼也不做,因爲這是到底我要爲最終格式。

2.)如果用戶輸入」 0.95" 我想爲字段的onblur改變上面的格式‘0.95’。 (同樣,如果他們進入」 9" 。等)

我一直在上網整夜尋找一個解決方案上淘身邊,所以這是我的最後一招!任何幫助和反饋,我可以得到更多的讚賞!

謝謝!

回答

1

這是不錯的,簡潔的:

function blurFormatDecimal (e) { 
    var val = isFinite(this.value) ? +this.value : 0; 
    this.value = val.toFixed(2); 
} 
myInput.onblur = blurFormatDecimal; 

使用isFinite(),而不是!isNaN()因爲isNaN("Infinity")回報false,但你肯定不要不想接受"Infinity"作爲有效輸入。

http://jsfiddle.net/gilly3/NjeQD/

+0

謝謝吉利!這就是訣竅!適用於飛行的顏色。我很感激! – 2012-07-26 18:03:09

4

像這樣的事情會做到這一點:

document.getElementById('amount').onblur = function() { 
    if(this.value && !isNaN(this.value)) {   
     this.value = parseFloat(this.value).toFixed(2); 
    } else { 
     this.value = 0; 
    } 
}; 

jsFiddle

+0

['parseFloat( 「無窮大」)toFixed(2) '](http://jsfiddle.net/DYs7Y/2/)返回'「Infinity」'。 [處理'「0」'](http://jsfiddle.net/DYs7Y/4/)返回'「0.00」',這與[處理非數字字符串]不一致(http://jsfiddle.net/DYs7Y/3 /)(返回沒有任何小數點的「0」)。 – gilly3 2012-07-26 17:30:59

-1

這裏是PHP的解決方案:

$formattedAmount = sprintf("%01.2f",$amount); 
+0

爲什麼這是downvoted? – Shoan 2016-12-21 12:08:50

0

如果需要使用PHP嘗試這樣做: $formattedAmount = sprintf("%05.2f",$amount);