Javascript toFixed() 不是一个函数
2010-09-16
27816
我正在尝试使用以下技术来格式化用户输入值,但是在 Fire Bug 控制台上出现以下错误
$(this).val().toFixed 不是函数
$(".amount-text").bind('change',function () {
$(this).val(($(this).val()).toFixed(2));
});
有人可以帮我吗?
3个回答
.val()
返回一个字符串,若要对数字使用
.toFixed()
,您需要先将其解析为数字,如下所示:
$(".amount-text").bind('change',function () {
$(this).val(parseFloat($(this).val()).toFixed(2));
});
或者使用 jQuery 1.4+,更简洁一些,至少对我来说
使用带有
.val()
的函数:
$(".amount-text").bind('change',function () {
$(this).val(function(i, v) { return parseFloat(v).toFixed(2); });
});
Nick Craver
2010-09-16
toFixed
仅适用于数字,请先将值解析为数字:
$(this).val(parseFloat($(this).val()).toFixed(2));
djdd87
2010-09-16
这是因为
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) );
});
您也可以使用更简单的方法:
$(".amount-text").bind('change',function () {
$(this).val( (0 + $(this).val()).toFixed(2) );
});
但出于可读性考虑,我不建议这样做!
DMI
2010-09-16