Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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_Onkeyup - Fatal编程技术网

Javascript 按键控设置金额格式

Javascript 按键控设置金额格式,javascript,onkeyup,Javascript,Onkeyup,我想格式化keyup javascript事件的金额。我需要这样的结果: function formatNumber(numberString) { var commaIndex = numberString.indexOf(','); var int = numberString; var frac = ''; if (~commaIndex) { int = numberString.slice(0, commaIndex);

我想格式化keyup javascript事件的金额。我需要这样的结果:

function formatNumber(numberString) {
    var commaIndex = numberString.indexOf(',');
    var int = numberString;
    var frac = '';

    if (~commaIndex) {
        int = numberString.slice(0, commaIndex);
        frac = ',' + numberString.slice(commaIndex + 1);
    }

    var firstSpanLength = int.length % 3;
    var firstSpan = int.slice(0, firstSpanLength);
    var result = [];

    if (firstSpan) {
        result.push(firstSpan);
    }

    int = int.slice(firstSpanLength);

    var restSpans = int.match(/\d{3}/g);

    if (restSpans) {
        result = result.concat(restSpans);
        return result.join(' ') + frac;
    }

    return firstSpan + frac;
}

formatNumber('1234567890,12'); // "1 234 567 890,12"
  • 100>100
  • 1000>1000
  • 100000000>100000
  • 1000,12>1000,12

你能帮我吗

你需要这样的东西:

function formatNumber(numberString) {
    var commaIndex = numberString.indexOf(',');
    var int = numberString;
    var frac = '';

    if (~commaIndex) {
        int = numberString.slice(0, commaIndex);
        frac = ',' + numberString.slice(commaIndex + 1);
    }

    var firstSpanLength = int.length % 3;
    var firstSpan = int.slice(0, firstSpanLength);
    var result = [];

    if (firstSpan) {
        result.push(firstSpan);
    }

    int = int.slice(firstSpanLength);

    var restSpans = int.match(/\d{3}/g);

    if (restSpans) {
        result = result.concat(restSpans);
        return result.join(' ') + frac;
    }

    return firstSpan + frac;
}

formatNumber('1234567890,12'); // "1 234 567 890,12"
将它与事件侦听器一起使用,并将表示数字的字符串发送到此函数,它将返回所需格式的字符串

input.onkeyup = function () {
    input.value = input.value.replace(/\d+(?:,\d+)?/g, formatNumber);
};

下面是一个有趣的古怪格式函数:

函数格式编号{
变量部分=s.split(/,/)
,间距=零件[0]
.split(“”).reverse().join(“”)//反转字符串。
.match(//\d{1,3}/g).join(“”)//用空格连接3位数字的组。
.split(“”).reverse().join(“”);//将其反向。
返回空格+(部分[1]?',“+部分[1]:”;//添加小数部分。
}
您可以通过在纯JavaScript中使用或使用jQuery中的函数将其附加到元素的“keyup”事件,例如:

$('.my input')。在('keyup',function()上{
var$this=$(this);
$this.val(formatNumber($this.val());
});

我尝试了我在stackoverflow站点中找到的功能,但结果是NaNjquery、keyup、trim:)这些是让你继续的关键词,因为我认为包括我在内的任何人都不会为完整答案而烦恼。这是关于格式的问题,是关于事件处理的问题吗?你说你试过另一个答案。你到底试了什么?你是否做了任何改变以适应你的情况?除了另一个答案的副本,你还试过别的吗?jQuery解决方案行吗,还是需要纯JavaScript?@whitebox:Oops。我测试过正则表达式,但不是全部。现在应该可以工作了。它不允许.00并且允许多个“,”@BantyRoy:这段代码不打算关注
。你可能已经注意到,数字的格式是不同的
是本例中的小数点,通常表示。是千分之一。