Каков наилучший способ форматирования числа с точностью до 2 знаков после запятой в jQuery?

StackOverflow https://stackoverflow.com/questions/477892

Вопрос

Это то, что у меня есть прямо сейчас:

$("#number").val(parseFloat($("#number").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">

Другие советы

Может быть, что-то вроде этого, где вы могли бы выбрать более одного элемента, если бы захотели?

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

Мы модифицируем функцию 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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top