开发者问题收集

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