Javascript toFixed()函数

时间:2010-09-16 09:05:31

标签: javascript jquery

我正在尝试使用以下技术格式化用户输入值,但我在Fire Bug控制台上收到以下错误

$(this).val()。toFixed不是函数

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

有人可以帮我吗?

4 个答案:

答案 0 :(得分: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 :(得分:6)

toFixed仅适用于数字,首先将值解析为数字:

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

答案 2 :(得分:2)

这是因为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) );
});

但我不建议将其用于可读性目的!

答案 3 :(得分:0)

HTML5将属性valueAsNumber添加到了input元素中,因此您无需自己应用parseFloat。 (Documentation at MDN