0
//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,我应该更改函数的哪一部分。

我使用 IE 9。

这是示例http://jsbin.com/arivug/1

4

0 回答 0