반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Python
- date_add
- checkbox
- Minus
- 파이썬
- comma
- phpexcel
- Example
- date_sub
- php
- javascript
- 파이썬설치
- Straps
- 날짜 더하기
- optionselected
- decimal
- 문자열찾기
- WINDOW11
- 날짜 빼기
- install
- mysql
- Excel
- selected
- NumberFormat
- option
- TIP
- 1227
- onlyNumber
- Tasks
- select
Archives
- Today
- Total
그럴 수도 있지
[Javascript] 숫자만 입력, 마이너스, 소수점, 콤마 (Enter only numbers, minus, decimal point, comma) 본문
Javascript
[Javascript] 숫자만 입력, 마이너스, 소수점, 콤마 (Enter only numbers, minus, decimal point, comma)
디벅 2022. 6. 24. 22:58반응형
숫자만 입력을 받아야 하거나, 마이너스 혹은 플러스만. 소수점 입력이 가능하거나 혹은 불가능하거나. 천단위가 넘어가면 콤마 처리를 해줘야하거나.
결국엔 인터넷에서 보고 배운 걸 합쳐서 함수를 만들었고 유용하게 사용 중이다. 회사에서 제일 많이 사용 중인 함수 중 하나.
* 예제는 아래에 간단하게 설명
Syntax
numberFormat(val, isMinus, isFloat, isComma)
Javascript
//숫자 입력 (마이너스, 소수점, 콤마)
function numberFormat(val, isMinus, isFloat, isComma){
var str = val;
//일단 마이너스, 소수점을 제외한 문자열 모두 제거
str = str.replace(/[^-\.0-9]/g, '');
//마이너스
if(isMinus){
str = chgMinusFormat(str);
} else {
str = str.replace('-','');
}
//소수점
if(isFloat){
str = chgFloatFormat(str);
} else {
if(!isMinus ){
str = str.replace('-','');
}
str = str.replace('.','');
if(str.length>1){
str = Math.floor(str);
str = String(str);
}
}
//콤마처리
if(isComma){
var parts = str.toString().split('.');
if(str.substring(str.length - 1, str.length)=='.'){
str = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,",") +".";
} else {
str = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,",") + (parts[1] ? "." + parts[1] : "");
}
}
return str;
}
function chgFloatFormat(str){
var idx = str.indexOf('.');
if(idx<0){
return str;
} else if(idx>0){
var tmpStr = str.substr(idx+1);
if(tmpStr.length>1){
if(tmpStr.indexOf('.')>=0){
tmpStr = tmpStr.replace(/[^\d]+/g, '');
str = str.substr(0,idx+1) + tmpStr;
}
}
} else if(idx==0){
str = '0'+str;
}
return str;
}
function chgMinusFormat(str){
var idx = str.indexOf('-');
if(idx==0){
var tmpStr = str.substr(idx+1);
//뒤에 마이너스가 또 있는지 확인
if(tmpStr.indexOf('-')>=0){
tmpStr = tmpStr.replace('-','');
str = str.substr(0,idx+1) + tmpStr;
}
} else if(idx>0){
str = str.replace('-','');
} else if(idx<0){
return str;
}
return str;
}
example
1. 숫자만 입력, 마이너스 허용, 소수점 허용, 콤마 처리)
<input type='text' onkeyup = "this.value=numberFormat(this.value, true, true, true)">
2. 숫자만 입력 받으며, 마이너스 허용, 소수점 불가, 콤마 처리
<input type='text' onkeyup = "this.value=numberFormat(this.value, true, false, true)">
3. 오로지 숫자만 입력 받으며 마이너스, 소수점, 콤마 처리 안함
<input type='text' onkeyup = "this.value=numberFormat(this.value, false, false, true)">
4. 숫자만 입력 받으며 마이너스 허용, 소수점 불가, 콤마 처리 안함
<input type='text' onkeyup = "this.value=numberFormat(this.value, true, false, false)">
위와 같이 입맛에 따라 파라미터 값을 넘겨 사용하면 된다.
* 예제 파일
반응형
'Javascript' 카테고리의 다른 글
[Javascript] 체크박스(checkbox) 전체 선택 및 해제, 전체 선택 판단) (0) | 2022.06.21 |
---|---|
[Javascript] select option control (value값으로 selected 하기) (0) | 2021.07.19 |