2012-01-05 2 views
0

jQuery의 슬라이더 플러그인을 사용하여 작업하려고합니다. 30402424와 같이 30,402,424와 같은 쉼표로 출력을 형식화해야합니다.jQuery에서 숫자의 서식을 지정하는 간단한 방법

자바 스크립트로 가능하다는 것을 알고 있지만 발견 한 유일한 방법은 매우 오래되었습니다. 나는

http://jsfiddle.net/EX5U7/

+0

Dupe : http://stackoverflow.com/questions/2646385/add-a-thous-with-javascript-or-jquery - 모든 정답 아래 링크 된 질문에서 @ dave1010의 솔루션을 구현합니다 –

답변

10

자바 스크립트 자체는 당신이 필요로 숫자 서식을 지원하지 않습니다 ... 그래서 당신이 무슨 뜻인지 볼 수있는 바이올린을 만들었습니다,하지만 일부 인터넷 검색으로 나는 다음과 같은 친숙한 솔루션을 발견 과거에는 사용했지만 더 나은 코드 품질을 위해 다소 수정되었습니다.

function addCommas(numberString) { 
    numberString += ''; 
    var x = numberString.split('.'), 
     x1 = x[0], 
     x2 = x.length > 1 ? '.' + x[1] : '', 
     rgxp = /(\d+)(\d{3})/; 

    while (rgxp.test(x1)) { 
    x1 = x1.replace(rgxp, '$1' + ',' + '$2'); 
    } 

    return x1 + x2; 
} 

출처 : http://www.mredkj.com/javascript/numberFormat.html

업데이트 바이올린 : 여기


http://jsfiddle.net/EX5U7/8/은 노골적으로 쉼표 매 3을 추가하는 것보다 훨씬 더 많은 일을 할 수 있도록 자바 스크립트에서 PHP의 number_format 기능을 구현하는 또 다른 솔루션입니다 수 :

function number_format (number, decimals, dec_point, thousands_sep) { 
    number = (number + '').replace(/[^0-9+\-Ee.]/g, ''); 
    var n = !isFinite(+number) ? 0 : +number, 
     prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), 
     sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, 
     dec = (typeof dec_point === 'undefined') ? '.' : dec_point, 
     s = '', 
     toFixedFix = function (n, prec) { 
      var k = Math.pow(10, prec); 
      return '' + Math.round(n * k)/k; 
     }; 
    // Fix for IE parseFloat(0.55).toFixed(0) = 0; 
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); 
    if (s[0].length > 3) { 
     s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); 
    } 
    if ((s[1] || '').length < prec) { 
     s[1] = s[1] || ''; 
     s[1] += new Array(prec - s[1].length + 1).join('0'); 
    } 
    return s.join(dec); 
} 

사용법 :의 number_format(123456.789, 2, '.', ','); 결과 123,456.79

출처 : http://phpjs.org/functions/number_format:481

바이올린 : http://jsfiddle.net/EX5U7/10/

+1

올바른 참조를 거쳐 답변에 링크 된 소스의 관련 부분을 포함시킵니다. 스택 오버 플로우시 모든 대답은 링크를 따르지 않아도 이해할 수 있어야합니다. –

+0

+1 정확히 내가 한 일 :-) – ManseUK

+0

메모 해 주셔서 감사합니다. 아직 여기에 너무 많은 질문에 정말로 대답하지 않았습니다! 나는 지금 내 대답을 바로 잡을 것이다. :) –

3

사용하여 다음 addCommas 방법 :

function addCommas(nStr) 
{ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

근무 예 : http://jsfiddle.net/EX5U7/1/

+1

왜 downvote? 나는 근원을 연결하고 일을 하는가? – ManseUK

0

서식 번호, 돈, 통화 작은 자바 스크립트 라이브러리입니다.

ui.value = (ui.value).toString().split("").reverse().join("").replace(/(\d{3})(?=\d)/g,"$1,").split("").reverse("").join("") 
+0

해결책에 결함이 있습니다. £ 275,579,809,0와 같이 분명히 틀린 숫자를 허용합니다. 2,755,798,090이어야합니다 –

+0

오른쪽 문자열을 교체해야합니다. 자, 이제이 작품 – abuduba

+0

Downvote가 제거되었습니다! –

0

이것은 복제본입니다.

하지만 당신의 정보를

This Question에서 제공하는 솔루션은 나를 편집 할 수 귀하의 JSFiddle

$(function() { 
     $("#slider").slider({ 
      value:100, 
      min: 0, 
      max: 5000000000, 
      step: 1, 
      slide: function(event, ui) { 
       $("#amount").val("£" + addCommas(ui.value)); 
      } 
     }); 
     $("#amount").val("£" + addCommas($("#slider").slider("value"))); 
    }); 

function addCommas(nStr) { 
    nStr += ''; 
    var x = nStr.split('.'); 
    var x1 = x[0]; 
    var x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 
0

노력이 :

function formatNumber(n){ 
    n += ''; 
    x = n.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

는하지만이있어 곳에서 기억하지 그것을 사용했다 여기에 : https://github.com/amantur/jquery.ui.counter

관련 문제