2013-10-08 2 views
0

다음 html 파일이 있습니다.자바 스크립트에서 가격을 유효한 가격 형식으로 변환하는 방법은 무엇입니까?

<input type="text" id="Price"> 

사용자가이 입력 필드에 가격 금액을 입력하면 자동으로 유효한 가격 형식으로 변환되어야합니다.

사용자가 9200000을 입력하면 자동으로 9,200,000으로 변환되어야한다고 가정합니다.

그래서 anyboby가 자바 스크립트에서 어떻게 수행되는지 설명 할 수 있습니까?

이 필드의 keyDown, keypress 또는 keyup 이벤트에서 수행해야합니다.

감사

+0

에서이다 (HTTP [당신이 시도 무엇?] : // mattgemmell .com/2008/12/08/what-have-you-tried /) – thefourtheye

+0

나는 그것을 SO에서 찾았지만 모든 곳에서 나는 그것을위한 검증을 발견했다. 유효성 검사가 필요 없습니다. 입력 된 값이 유효한 가격이 아닌 경우 자동으로 가격 형식으로 변환해야합니다. – user2826169

+0

http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript –

답변

1

, 나는 reference

//Attach event 
var el = document.getElementById("Price"); 
el.onkeydown = function(evt) { 
    evt = evt || window.event; 
    this.value = addCommas(stripNonNumeric(this.value)); 
}; 

// This function removes non-numeric characters 
function stripNonNumeric(str) 
{ 
    str += ''; 
    var rgx = /^\d|\.|-$/; 
    var out = ''; 
    for(var i = 0; i < str.length; i++) 
    { 
    if(rgx.test(str.charAt(i))){ 
     if(!((str.charAt(i) == '.' && out.indexOf('.') != -1) || 
      (str.charAt(i) == '-' && out.length != 0))){ 
     out += str.charAt(i); 
     } 
    } 
    } 
    return out; 
} 

function addCommas(nStr) 
{ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
    x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

Working Demo

0

입력에 이벤트 리스너를 추가하고 당신이를 keyDown 이벤트를 얻을 때 리스너가 호출 사용자의 입력 값에 쉼표를 삽입하는 함수를 작성합니다. 당신이 시도 할 수

+0

예 이벤트 리스너를 추가 할 수는 있지만 내 질문은 쉼표? – user2826169

1

에 기능을 사용한이 How can I format numbers as money in JavaScript?

Number.prototype.formatMoney = function(c, d, t){ 
var n = this, 
    c = isNaN(c = Math.abs(c)) ? 2 : c, 
    d = d == undefined ? "." : d, 
    t = t == undefined ? "," : t, 
    s = n < 0 ? "-" : "", 
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
    j = (j = i.length) > 3 ? j % 3 : 0; 
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); 
}; 
alert((123456789.12345).formatMoney(2, '.', ',')); 
+0

감사합니다. – user2826169

관련 문제