테스트 사이트 - 개발 중인 베타 버전입니다

숫자 입력시에 컴마와 소수점 제어하기

· 1년 전 · 940 · 4

<input type="text" name="number" class="mask-num decimal-2">
와 같이 input 에 클래스를 통해 컴마와 소수점을 제어합니다.


function numberFormat(number, decimals = 0, decPoint = '.', thousandsSep = ',') {
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    
    let n = !isFinite(+number) ? 0 : +number;
    let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);
    
    function toFixedFix(n, prec) {
        let k = Math.pow(10, prec);
        return '' + Math.round(n * k) / k;
    }
    
    let s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, thousandsSep);
    }
    
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    
    return s.join(decPoint);
}

document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('input.mask-num').forEach(function(input) {
        // 소수점 자릿수 설정: decimal-1, decimal-2 등의 클래스에서 숫자를 추출
        const decimalMatch = input.className.match(/decimal-(\d+)/);
        const decimalPlaces = decimalMatch ? parseInt(decimalMatch[1], 10) : 0;
        
        // 초기 포맷 적용
        input.value = numberFormat(input.value, decimalPlaces);

        // 입력할 때마다 포맷 적용
        input.addEventListener('input', function() {
            input.value = numberFormat(input.value, decimalPlaces);
        });
    });
});

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 4개

1년 전

감사합니다 ^^

1년 전

유용하게 잘쓰겠습니다~감사합니다~

1년 전

수고하셨습니다. 유용하게 사용될 수 있겠어요

1년 전

감사합니다

게시글 목록

번호 제목
23966
23963
23953
23949
23938
23935
23933
23928
23919
23918
23917
23910
23902
23901
23897
23894
23893
23891
23885
23872
23870
23862
23859
23853
23845
23838
23827
23819
23805
23801