我有以下的html。如何在javascript中將價格轉換爲有效的價格格式?
<input type="text" id="Price">
當用戶輸入在該輸入領域的價格量,即應被自動轉換爲有效的價格的格式。
假設用戶輸入9200000,它應該被自動轉換爲9200000。
所以anyboby可以解釋如何在JavaScript中完成?
應該在該keydown,按鍵或該領域的KEYUP事件來完成。
感謝
我有以下的html。如何在javascript中將價格轉換爲有效的價格格式?
<input type="text" id="Price">
當用戶輸入在該輸入領域的價格量,即應被自動轉換爲有效的價格的格式。
假設用戶輸入9200000,它應該被自動轉換爲9200000。
所以anyboby可以解釋如何在JavaScript中完成?
應該在該keydown,按鍵或該領域的KEYUP事件來完成。
感謝
你可以試試這個,我在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;
}
使用的功能這是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, '.', ','));
謝謝它適合我。 – user2826169
(HTTP [你嘗試過什麼?]:// mattgemmell .com/2008/12/08/what-have-you-tried /) – thefourtheye
我已經在SO上搜索過它,但是到處都是,我找到了它的驗證。我不需要驗證。如果輸入的值不是有效的價格,我需要將其自動轉換爲價格格式。 – user2826169
你有沒有考慮http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript –