在 jQuery 中,将数字格式化为小数点后两位的最佳方法是什么?

这就是我现在拥有的:

$("#number").val(parseFloat($("#number").val()).toFixed(2));

在我看来一团糟。我觉得我没有正确地链接函数。我必须为每个文本框调用它,还是可以创建一个单独的函数?

197973 次浏览

也许像这样,你可以选择一个以上的元素,如果你喜欢?

$("#number").each(function(){
$(this).val(parseFloat($(this).val()).toFixed(2));
});

如果你对几个领域都这样做,或者经常这样做,那么也许一个插件就是答案。
下面是一个 jQuery 插件的开始,它将字段的值格式化为小数点后两位。
它由字段的 onchange 事件触发。

<script type="text/javascript">


// mini jQuery plugin that formats to two decimal places
(function($) {
$.fn.currencyFormat = function() {
this.each( function( i ) {
$(this).change( function( e ){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
});
});
return this; //for chaining
}
})( jQuery );


// apply the currencyFormat behaviour to elements with 'currency' as their class
$( function() {
$('.currency').currencyFormat();
});


</script>
<input type="text" name="one" class="currency"><br>
<input type="text" name="two" class="currency">

我们修改一个用于 keyup 的 Meouw 函数,因为当您使用输入时,它会更有帮助。

看看这个:

嘿! ,@heridev 和我在 jQuery 中创建了一个小函数。

接下来你可以试试:

超文本标示语言

<input type="text" name="one" class="two-digits"><br>
<input type="text" name="two" class="two-digits">​

JQuery

// apply the two-digits behaviour to elements with 'two-digits' as their class
$( function() {
$('.two-digits').keyup(function(){
if($(this).val().indexOf('.')!=-1){
if($(this).val().split(".")[1].length > 2){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this; //for chaining
});
});

在线演示:

Http://jsfiddle.net/c4wqn/

(@Heridev,@Vicmaster)