//The porpost of this function is prevent user type any thing intext field except 0-9 and .
//For recieve value,event and keycode from text field.
function allowOnlyFloatingPointNumbers(textbox,val,key)
{
var MaxLen = 11;
var val2 = val.replace(/,/g,"");
var letterNumber = /^[0-9.]+$/;
if((val2.match(letterNumber)))
{
textbox.value = val;
}
else
{
textbox.value = val.substr(0,val.length-1);
return;
}
var valtmp = val;
if(valtmp.indexOf(".")<0)
{
if(valtmp.replace(/,/g,"").length>MaxLen)
{
textbox.value = addCommas(val.substr(0,val.length-1));
}
else
{
textbox.value = addCommas(valtmp.replace(/,/g,""));
}
}
else
{
val = val.replace(/[^0-9.]/g, ""); // strip non-digit chars
textbox.value = addCommas(val); // replace textbox value
var indx = val.indexOf(".");
if(indx>-1)
{
var lng = val.substr(indx+1).length;
if(lng>2)
{
textbox.value = addCommas(val.substr(0,val.length-1));
}
}
}
}
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;
}
987654321 と入力すると、テキストボックスに 987,654,321 となります
しかし、5から0への変更のようにテキストの途中で編集する必要がある場合、テキストは987,643,210になり、テキストの最後にゼロが挿入されます.987,604,321である必要があります関数のどの部分を変更する必要があります.
IE9を使用しています。
ここに例がありますhttp://jsbin.com/arivug/1