jQuery用逗号缩短长号

时间:2012-06-09 21:04:45

标签: javascript jquery

可以使用javascript/jQuery

完成此操作
<div class="number">99,123,123</div>
<div class="number">123,123,123</div>
<div class="number">1,123,123,123</div>
<div class="number">1,123,123,123,123</div>

显示为

99,123,123 // (only start converting after > 8 total digits)
123M // M stands of million
1B
1T

但我还需要保留实际数字,并只显示转换后的数字 我仍然需要访问未转换的号码。

3 个答案:

答案 0 :(得分:3)

$('div.number').each(function(){
    var num = this.innerHTML.replace(/\D/g, "");
    var result;

    if (num.length < 9)
        return true;
    else if (num.length == 9)
        result = num.substr(0, 3) + 'M';
    else if (num.length > 9 && num.length < 12)   
        result = num.substr(0, num.length - 9) + 'B';
    else if (num.length > 12 && num.length < 15)   
        result = num.substr(0, num.length - 12) + 'T';

    this.innerHTML = '<span class="hidden">' + this.innerHTML + '</span>' + result;
});​

Live DEMO

您还可以使用jQuery data函数保存初始值:

    ...
    else if (num.length > 12 && num.length < 15)   
        result = num.substr(0, num.length - 12) + 'T';

    $(this).data('previous-value', this.innerHTML);
    this.innerHTML = result;
});

Live DEMO

答案 1 :(得分:3)

如果你厌倦了Javascript并且擅长PHP,那就去服务器端,然后:

a)将原始值存储在javascript var中 b)将值存储在隐藏的html元素中OR :( imo best solution)
c)将原始值存储为data - 相应元素的属性。然后,您可以像这样检索它:$("your-element").data("original-value")

只需显示您的php代码,我们就会找到一个可以使其正常工作的解决方案。

答案 2 :(得分:0)

我是这样做的:

var numbers = $('.number').map(function() {
  return $(this).text().replace(',', '');
});

for (i in numbers) {
  var number = parseInt(numbers[i], 10);
  var number_of_digits = numbers[i].length;

  // ...
}