2011-03-04 67 views
4
<input value="123" /> 
<span></span> 

$('input').change(function(){ 
    var val = $(this).val().toFixed(2); 
    $('span').text(val); 
}); 

我曾嘗試上面的代碼,但似乎無法得到的text()小數只是顯示爲123。這是我第一次與experimentind toFixed()解析成小數跨度

以防萬一toFixed()js本地方法不是jquery

+2

在這裏或在您的代碼中,垃圾郵件是否爲錯字? – jgauffin

+0

@jgauffin是我注意到它,但thnx :) – Val

回答

12

toFixed是您將拜會多位,而不是一個字符串的方法。你需要分析字符串到數字:

var val = parseFloat($(this).val(), 10).toFixed(2); 

現場演示這裏:http://jsfiddle.net/QrW5C/

+0

好吧,這個問題在'$('span')。val(val | 0);'我一直認爲'|'就像是'或'語句用'val?val:0'代替'val | 0'來避免'NaN'的值 – Val

+2

@Val:它應該是'val ||' 0'。 '|'是按位或。 '||'是邏輯OR。 –

+0

兩隻鳥與一塊石頭大聲笑:)鳥我的意思是問題回答:) thnx隊友 – Val

0

看看錯誤控制檯。您應該看到類似於:

TypeError: Object 123 has no method 'toFixed' 

字符串沒有toFixed()方法。只有數字有。值轉換爲數字第一(例如,通過預先+):

var val = (+$(this).val()).toFixed(2); 

DEMO

+0

我的錯應該提到這一點... on console.log();看起來不錯,有兩位小數,但不是'span'標記 – Val

+0

@Val:你究竟是什麼意思? '$(this).val()。toFixed(2);'絕對不行。上面應該工作:http://jsfiddle.net/YHw92/ –

+0

不,我的意思是console.log(val)是很酷的工作,$('span')。text(val);不是 – Val

0

你需要對它進行解析:

var NumericValue = parseFloat($(this).val()) 
var val = NumericValue .toFixed(2); 

資訊:http://www.bennadel.com/blog/1013-Javascript-Number-toFixed-Method.htm

也:

<span></spam> (?) 
+0

爲什麼如此批評'm'大聲笑,你知道它是旁邊的n,他們看起來類似容易的錯字:) :) – Val

+0

沒有後顧之憂,只是沒有把握。可能是我有點粗魯把它作爲代碼塊。 appologies :) –