Как вы форматируете деньги, но допускаете отрицательные числа - PullRequest
0 голосов
/ 17 января 2020

У меня есть эта удивительная функция для форматирования денег, когда пользователи вводят их, однако я не могу понять, как принимать отрицательные значения.

$(this).on('change click keyup input paste', 'input.dollar', function() {
    $(this).val(function(index, value) {
        return value.replace(/(?!\.)\D/g, "").replace(/(?:\..*)\./g, "").replace(/\.(\d\d)\d?$/, '.$1').replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    });
});

Ответы [ 2 ]

1 голос
/ 17 января 2020

Я понял это самостоятельно. Возможно, не самый лучший способ сделать это.

$(this).on('change click keyup input paste', 'input.dollar', function() {
    $(this).val(function(index, value) {
        var sign = value.charAt(0),
        $return = 0;
        $return = value.replace(/(?!\.)\D/g, "").replace(/(?:\..*)\./g, "").replace(/\.(\d\d)\d?$/, '.$1').replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        if (sign == '-')
        {
            $return = '-'+$return;
        }

        return $return;
    });
});
0 голосов
/ 17 января 2020

Вот более понятный пример:

(Number(''.replace('1','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"$0.00"

(Number('1'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"$1.00"

(Number('10'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"$10.00"

(Number('100'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"$100.00"

(Number('1000'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"$1,000.00"

(Number('-1000'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"-$1,000.00"

(Number('-1000.09'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"-$1,000.09"

(Number('$-1,000.09'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"-$1,000.09"

(Number('-$1,000.09'.replace('$','').replace(',','')))
  .toLocaleString('en-US', { style: 'currency', currency: 'USD' });
"-$1,000.09"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...