programing

jquery를 사용하여 통화를 올바르게 포맷하려면 어떻게 해야 합니까?

stoneblock 2023. 10. 31. 20:25

jquery를 사용하여 통화를 올바르게 포맷하려면 어떻게 해야 합니까?

마스크는 필요 없지만 통화(모든 브라우저에서)를 포맷하고 문자나 특수 문자를 입력할 수 없는 것이 필요합니다.도와 주셔서 감사해요.

예:

유효: $50.00
$1,000.53

유효하지 않음: $45.00
$34.3r6

다른 옵션(ASP를 사용하는 경우).순면도기 뷰)는 다음과 같습니다.

<div>@String.Format("{0:C}", Model.total)</div>

이렇게 하면 포맷이 정확합니다.참고 (item.total은 더블/decimal)

만약 jQuery에서 당신은 또한 Regex를 사용할 수 있습니다.

$(".totalSum").text('$' + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());

JQuery 포맷 통화 플러그인
http://code.google.com/p/jquery-formatcurrency/

Melu의 답변을 확대하면 코드를 기능화하고 음의 양을 처리할 수 있습니다.

샘플 출력:
$5.23
-$5.23

function formatCurrency(total) {
    var neg = false;
    if(total < 0) {
        neg = true;
        total = Math.abs(total);
    }
    return (neg ? "-$" : '$') + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString();
}

결과적으로 jQuery FormatCurrency 플러그인이 왜 좋은 답변인지에 대한 결론으로, 저는 당신의 의견을 반박하고 싶습니다.

1. code.google.com/p/jquery-formatcurrency - 모든 문자를 필터링하지 않습니다.한 글자만 입력해도 지워지지 않습니다.

예, 형식 Currency() 자체로는 문자를 필터링할 수 없습니다.

// only formats currency
$(selector).formatCurrency();

그러나 Currency 플러그인 형식에 포함되어 있는 toNumber()는 그렇지 않습니다.

따라서 다음 작업을 수행할 수 있습니다.

// removes invalid characters, then formats currency
$(selector).toNumber().formatCurrency();

jquery.inputmask 3.x를 사용합니다. 여기 데모 참조

파일 포함:

<script src="/assets/jquery.inputmask.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.extensions.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.numeric.extensions.js" type="text/javascript"></script>

코드는 다음과 같습니다.

$(selector).inputmask('decimal',
  { 'alias': 'numeric',
    'groupSeparator': '.',
    'autoGroup': true,
    'digits': 2,
    'radixPoint': ",",
    'digitsOptional': false,
    'allowMinus': false,
    'prefix': '$ ',
    'placeholder': '0'
  }
);

하이라이트:

  • 사용하기 쉬운
  • 마스크 안에 있던 선택적 부품
  • 복잡성을 숨긴 별칭을 정의할 수 있는 가능성
  • 날짜/날짜 시간 마스크
  • 숫자 마스크
  • 많은 콜백
  • greedy이 없는 마스크
  • 옵션으로 많은 기능을 활성화/비활성화/구성할 수 있습니다.
  • 읽기 전용/사용 안 함/ dir="rtl" 특성 지원
  • 지원 데이터 입력 마스크 특성
  • 다중 마스크 지원
  • 정규 마스크 지원
  • 동적 마스크 지원
  • 전처리-마스크 지원
  • value 형식 지정/입력 요소 없이 유효성 검사

예전에는 jquery 형식의 통화 플러그인을 사용했는데 최근에는 버그가 심합니다.USD/CAD만 포맷하면 되기 때문에 자동 포맷을 작성했습니다.

$(".currencyMask").change(function () {
            if (!$.isNumeric($(this).val()))
                $(this).val('0').trigger('change');

            $(this).val(parseFloat($(this).val(), 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
        });

모든 입력의 클래스를 통화 형식으로 설정하기만 하면 됩니다.<input type="text" class="currencyMask" />어느 브라우저에서나 완벽하게 포맷할 수 있습니다.

jQuery(플러그인 없음)를 사용하여 regexp 통화 시도:

$(document).ready(function(){
  $('#test').click(function() {
    TESTCURRENCY = $('#value').val().toString().match(/(?=[\s\d])(?:\s\.|\d+(?:[.]\d+)*)/gmi);
    if (TESTCURRENCY.length <= 1) {
      $('#valueshow').val(
        parseFloat(TESTCURRENCY.toString().match(/^\d+(?:\.\d{0,2})?/))
      );
    } else {
      $('#valueshow').val('Invalid a value!');
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" value="12345.67890" id="value">
<input type="button" id="test" value="CLICK">
<input type="text" value="" id="valueshow">

편집: 값을 유효/무효로 새로 선택합니다.

자바스크립트는 이미 가지고 있습니다.

var cur = function (amt) {
    return Intl.NumberFormat('en-US', { style: "currency", currency: "USD" }).format(amt);
};

C#

@{
    CultureInfo newCulture = CultureInfo.CreateSpecificCulture(Model.culture);
var ri = new RegionInfo(@newCulture.LCID);
}

jQuery

$(document).find("#labGrandTotal").text(Intl.NumberFormat('@Model.culture', { style: 'currency', currency: '@ri.ISOCurrencySymbol'}).format(num));

여기서 Model.culture는 예를 들어 "en-GB"입니다.

언급URL : https://stackoverflow.com/questions/5043650/how-can-i-correctly-format-currency-using-jquery