2010-09-16 42 views
13

我試圖格式化使用以下方法用戶輸入的值,但我得到消防錯誤控制檯上出現以下錯誤的Javascript toFixed()函數

$(本).VAL()。toFixed不是一個函數

$(".amount-text").bind('change',function() { 
    $(this).val(($(this).val()).toFixed(2)); 
}); 

有人可以幫助我嗎?

回答

29

.val()返回一個字符串,使用.toFixed()上一個數字,你需要將它解析爲一個號碼第一次,像這樣:

$(".amount-text").bind('change',function() { 
    $(this).val(parseFloat($(this).val()).toFixed(2)); 
}); 

或者使用jQuery 1.4+,有點清潔,至少要我use a function with .val()

$(".amount-text").bind('change',function() { 
    $(this).val(function(i, v) { return parseFloat(v).toFixed(2); }); 
}); 

You can give it a try here

+1

+1使用函數 - 看起來更可讀。 – DMI 2010-09-16 09:14:27

+0

當我使用該函數時,它返回一個對象。 – Keyslinger 2011-11-08 20:57:18

6

toFixed僅適用於數字,值解析到多個第一:

$(this).val(parseFloat($(this).val()).toFixed(2)); 
1

這是因爲val()返回String而非Number。爲了能夠使用toFixed(),做這樣的事情:

$(".amount-text").bind('change',function() { 
    $(this).val((parseFloat($(this).val())).toFixed(2)); 
}); 

甚至:

$(".amount-text").bind('change',function() { 
    $(this).val((new Number($(this).val())).toFixed(2)); 
}); 

您還可能能夠稍微hackily做得一樣:

$(".amount-text").bind('change',function() { 
    $(this).val((0 + $(this).val()).toFixed(2)); 
}); 

,但我不要爲了可讀性的目的而推薦它!