2017-02-09 14 views
0

키 입력 이벤트에 다음 JavaScript 함수를 사용하여 입력 번호에 천 단위 구분 기호를 추가했습니다.키 누르기 이벤트에 JavaScript가있는 천 단위 구분 기호 추가

$("#inputId").on('keyup', function(evt){ 
    if (evt.which != 110 && evt.which != 190){ 
     var n = parseFloat($(this).val().replace(/\,/g,''),10);    
     $(this).val(n.toLocaleString()); 
    } 
}); 

예상대로이 기능이 작동 대부분의 경우, 그러나 유일한 문제 (예 : 10 0 1) 소수점 제로를 허용하지 않습니다 입력 필드이지만 같은 번호를 받아 않는다 10. 5. 나는이 행동의 이유를 알 수 없다. 어떤 생각?

감사합니다.

+0

분석이'0'을 제거하는 것이 매우 기본적인 출발점이 될 것입니다 및 기타 국가/시스템에서 다른 구분을 고려하지 않습니다 '1.0' =>'1' –

+1

'parseFloat (x, 10)'의 기능은 무엇입니까? [MDN은 하나의 인수만을 가지고 있다고 말합니다.] –

+0

'parseFloat'에는 기수 인수가 없습니다. .... so 두 번째 인수를 추가해도 의미가 없습니다. –

답변

1

소수점으로 나누면 효과가 있습니다. 이 같은. 이는 이후는 아무튼, (10.000,00 예)

<script> 
 
var myinput = document.getElementById('myinput'); 
 

 
myinput.addEventListener('keyup', function() { 
 
    var val = this.value; 
 
    val = val.replace(/[^0-9\.]/g,''); 
 
    
 
    if(val != "") { 
 
    valArr = val.split('.'); 
 
    valArr[0] = (parseInt(valArr[0],10)).toLocaleString(); 
 
    val = valArr.join('.'); 
 
    } 
 
    
 
    this.value = val; 
 
}); 
 

 
</script>
<input id="myinput" type="text'>

+0

답을 고맙다. 내 사건에서 효과가있는 것처럼 보인다. – Lakmal

+0

@ 입력 후 15 자리 숫자가 0이됩니다. 이유는 무엇입니까 ?? –