我正在开发一个网站,我希望在给定的要求中格式化数字,如下所示:
我自己开发了它,如下所示:
function Maskme(obj, evt) {
var event = (window.event) ? window.event : evt;
var str = document.getElementById("txtamt");
if (event.keyCode != 8 && event.keyCode != 13) {
if (str.value.length == 3 && str.value.indexOf(".") == -1) {
var val = parseFloat(str.value);
var val1 = (val / 100).toFixed(2);
str.value = val1;
}
else if (str.value.length > 3) {
var val = parseFloat(str.value) * 1000;
var val1 = (val / 100).toFixed(2);
str.value = val1;
}
else {
str.value = str.value;
}
}
else {
if (event.keyCode != 13) {
var str1 = parseFloat(str.value) / 10;
if (str1 != 0 && !isNaN(str1))
str.value = (str1).toFixed(2);
else
str.value = "";
}
}
}
但我遇到的问题是:
如果有任何现成的插件可用或者任何人已经开发了这种插件,那么请通知我,我将非常感激。
答案 0 :(得分:1)
我改变它以先替换点,然后计算非常简单:
$("#txtamt").keyup(function(obj, evt) {
var event = (window.event) ? window.event : evt;
//ignore arrow keys so that user can move curser
switch(event.keyCode)
{
case 37:
case 38:
case 39:
case 40:
return;
default:
break;
}
var str = document.getElementById("txtamt");
str.value = str.value.replace(".", "");
if (str.value.length == 3) {
var val = parseFloat(str.value);
var val1 = (val / 10).toFixed(1);
str.value = val1;
}
else if (str.value.length > 3) {
var val = parseFloat(str.value);
var val1 = (val / 100).toFixed(2);
str.value = val1;
}
});
答案 1 :(得分:0)
这是我的版本。 DEMO
它可能更优雅,但它似乎做它应该做的事情
var x = document.getElementById("x");
x.focus();
x.select();
var tId;
x.onfocus=function() {
var fld = this;
tId = setInterval(function() {
var val = fld.value;
if (val.length>2) {
if (val.indexOf(".") ==-1) {
if (val.length==3) val = parseFloat(val/10).toFixed(1);
else val = parseFloat(val/100).toFixed(2);
}
else if (val.length==4) val = parseFloat(val).toFixed(1);
else if (val.length<=3) val = parseInt(val);
else val = parseFloat(val).toFixed(2);
fld.value=val;
}
},10);
}
x.onblur=function() { clearInterval(tId)}