1. 숫자에 콤마를 넣고 싶어!
- input창에 숫자를 입력하면 콤마 없이 나타난다.
- 하지만 숫자를 입력했을 때 셋째 자리마다 콤마를 찍고 싶을 때가 있다.
1234567890 //일반 1,234,567,890 //콤마 추가
어떻게 하면 숫자에 콤마를 추가할 수 있을까?
대부분 알려진 방법은 정규식으로 콤마를 추가하는 방법이다!
하지만 오늘은 toLocaleString를 사용해보자~
2. toLocaleString는 무엇인가요?
toLocaleString
는 숫자를 지역별 포맷으로 반환한다.(문자열로 반환)- 또한, 원본을 변경하지 않는다.
- 이 속성에는 여러 인자가 있는데, 아래 표를 살펴보자!
인자 | 설명 | 예시 |
---|---|---|
ko-KR | 셋째자리에 콤마 추가 | "3,540,000" |
cs-CZ | 셋째자리에 띄어쓰기 추가 | "3 540 000" |
da-DK | 셋째자리에 온점 추가 | "3.540.000" |
de-CH | 셋째자리에 따옴표 추가 | "3’540’000" |
- 구체적인 사용방법은 아래와 같다.
const a = 3540000;
console.log(a.toLocaleString('ko-KR')) //"3,540,000"
console.log(a.toLocaleString('cs-CZ')) //"3 540 000"
console.log(a.toLocaleString('da-DK')) //"3.540.000"
console.log(a.toLocaleString('de-CH')) //"3’540’000"
3. input에 입력한 숫자에 콤마를 넣어보자
아래 예시는 입력칸에 숫자를 입력했을 때, 콤마가 붙은 형태로 보여준다.
작성한 코드에 대해 간단히 알아보자
See the Pen input-split-number by KumJungMin (@kumjungmin) on CodePen.
(1). html에 input 추가
[1] 입력칸을 만들기 위해 id="number"
인 input을 추가한다.
<!--html-->
<input type="text" id="number"/> <!--[1]-->
(2). js로 컨트롤하기
[1] id="number"
인 input을 가져온다.
[2] 키입력이 있을 때마다 포맷팅을 해야하므로 keyup
이벤트를 사용한다.
const input = document.querySelector('#number'); //[1]
input.addEventListener('keyup', function(e) { ... }) //[2]
[3] e.target.value
를 사용해 input에 입력된 값을 가져온다.
...
input.addEventListener('keyup', function(e) {
let value = e.target.value; //[3]
...
})
[4]에서 왜 input값에
replaceAll
,Number
처리를 하나요?
...
input.addEventListener('keyup', function(e) {
let value = e.target.value;
value = Number(value.replaceAll(',', '')); //[4]
...
})
: 우리는 키입력이 있을 때마다, 포맷팅된 문자열을 input에 넣을 것이다.
: 그렇기에 input에서 "XXX,XX"
처럼 콤마가 포함된 문자열이 온다.
: 하지만 toLocaleString
는 숫자를 입력받아야 한다.
: 그러므로 replaceAll(',', '')
로 콤마를 제외하고, Number()
로 숫자 처리를 해줘야 한다.
[5] toLocaleString('ko-KR')
을 해서 숫자에 콤마를 추가한다.
[6] 마지막으로 input.value
을 사용해 포맷팅된 값을 input에 넣는다.
...
input.addEventListener('keyup', function(e) {
let value = e.target.value;
value = Number(value.replaceAll(',', ''));
const formatValue = value.toLocaleString('ko-KR'); //[5]
input.value = formatValue; //[6]
})
추가적으로 문자를 입력했을 때 0으로 초기화하려면 아래와 같이 하면 된다.
const input = document.querySelector('#number');
input.addEventListener('keyup', function(e) {
let value = e.target.value;
value = Number(value.replaceAll(',', ''));
if(isNaN(value)) { //NaN인지 판별
input.value = 0;
}else { //NaN이 아닌 경우
const formatValue = value.toLocaleString('ko-KR');
input.value = formatValue;
}
})
출처
아래 링크로 가면 더 알 수 있다구~ 👍👍
'개발 기술 > 사소하지만 놓치기 쉬운 개발 지식' 카테고리의 다른 글
js 코드를 더 짧게 써보자 (0) | 2021.09.12 |
---|---|
캔버스로 둥근 모서리 만들기 (0) | 2021.09.12 |
특정 길이의 배열 가져오기, 가변인자 받기, console.table 등 (0) | 2021.09.12 |
gif hover 재생 이벤트 만들기 (0) | 2021.09.12 |
배열판별법, JSON.parse, padStart, querySelector 성능 (0) | 2021.09.12 |
댓글