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
'programing' 카테고리의 다른 글
조건부로 angular.js에 요소 특성을 추가합니다. (0) | 2023.10.31 |
---|---|
"Increct Content-Type:" 예외는 각도 mvc 6 응용 프로그램을 던집니다. (0) | 2023.10.31 |
두 개의 열을 사용하여 데이터 피벗 (0) | 2023.10.31 |
주어진 중단점에 도달할 때까지 GDB에서 실행되는 모든 행을 자동으로 인쇄하는 방법은 무엇입니까? (0) | 2023.10.31 |
last_value window 함수가 제대로 작동하지 않습니다. (0) | 2023.10.31 |