代码之家  ›  专栏  ›  技术社区  ›  Iain Holder

在jquery中,将数字格式化为2个小数位的最佳方法是什么?

  •  60
  • Iain Holder  · 技术社区  · 15 年前

    这就是我现在拥有的:

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

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

    3 回复  |  直到 12 年前
        1
  •  97
  •   meouw    15 年前

    如果您要对几个字段执行此操作,或者经常执行此操作,那么可能需要一个插件作为答案。
    下面是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">
    
        2
  •  61
  •   Svante Svenson    15 年前

    也许是这样的,如果你愿意,你可以在哪里选择多个元素?

    $("#number").each(function(){
      $(this).val(parseFloat($(this).val()).toFixed(2));
    });
    
        3
  •  4
  •   DarkAjax    12 年前

    我们将Meouw函数修改为与keyup一起使用,因为当您使用输入时,它会更有用。

    检查一下:

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

    您可以尝试下一步:

    HTML

    <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)

    推荐文章