Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何格式化货币,但允许负数_Javascript_Jquery - Fatal编程技术网

Javascript 如何格式化货币,但允许负数

Javascript 如何格式化货币,但允许负数,javascript,jquery,Javascript,Jquery,我有一个很棒的功能,可以在用户输入货币时对其进行格式化,但是我似乎不知道如何接受负值 $(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

我有一个很棒的功能,可以在用户输入货币时对其进行格式化,但是我似乎不知道如何接受负值

$(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, ",");
    });
});

下面是一个更容易理解的例子:

(编号(''.replace('1','').replace('',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$0.00"
(编号('1'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$1.00"
(编号('10'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$10.00"
(编号('100'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$100.00"
(编号('1000'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$1,000.00"
(编号('-1000'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.00"
(编号('-1000.09'。替换('$','')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.09"
(编号('$-1000.09'。替换('$','')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.09"
(编号('-$1000.09'.替换('$','')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.09"

我自己想出来的。也许这不是最好的方法

$(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;
    });
});

为什么要替换第一个示例中的
1
。那是打字错误吗?