Javascript 如何使文本中间的文本字段可编辑 //此函数的post是防止用户在文本字段中键入除0-9和之外的任何内容。 //对于文本字段中的接收值、事件和键代码。 函数AllowOnlyFloatingPointNumber(文本框、值、键) { var MaxLen=11; var val2=val.replace(/,/g,“”); 变量letterNumber=/^[0-9.]+$/; 如果((值2.匹配(字母编号))) { textbox.value=val; } 其他的 { textbox.value=val.substr(0,val.length-1); 返回; } var valtmp=val; if(valtmp.indexOf(“.”)MaxLen) { textbox.value=addCommas(val.substr(0,val.length-1)); } 其他的 { textbox.value=addCommas(valtmp.replace(/,/g,”); } } 其他的 { val=val.replace(//[^0-9.]/g,“”;//带非数字字符 textbox.value=addCommas(val);//替换textbox值 var indx=val.indexOf(“.”); 如果(indx>-1) { var lng=val.substr(indx+1)。长度; 如果(液化天然气>2) { textbox.value=addCommas(val.substr(0,val.length-1)); } } } } 函数addCommas(nStr) { nStr+=”; x=nStr.拆分(“.”); x1=x[0]; x2=x.长度>1?”。“+x[1]:”; var rgx=/(\d+)(\d{3})/; while(rgx.测试(x1)){ x1=x1。替换(rgx,“$1”+”,“+”$2”); } 返回x1+x2; }

Javascript 如何使文本中间的文本字段可编辑 //此函数的post是防止用户在文本字段中键入除0-9和之外的任何内容。 //对于文本字段中的接收值、事件和键代码。 函数AllowOnlyFloatingPointNumber(文本框、值、键) { var MaxLen=11; var val2=val.replace(/,/g,“”); 变量letterNumber=/^[0-9.]+$/; 如果((值2.匹配(字母编号))) { textbox.value=val; } 其他的 { textbox.value=val.substr(0,val.length-1); 返回; } var valtmp=val; if(valtmp.indexOf(“.”)MaxLen) { textbox.value=addCommas(val.substr(0,val.length-1)); } 其他的 { textbox.value=addCommas(valtmp.replace(/,/g,”); } } 其他的 { val=val.replace(//[^0-9.]/g,“”;//带非数字字符 textbox.value=addCommas(val);//替换textbox值 var indx=val.indexOf(“.”); 如果(indx>-1) { var lng=val.substr(indx+1)。长度; 如果(液化天然气>2) { textbox.value=addCommas(val.substr(0,val.length-1)); } } } } 函数addCommas(nStr) { nStr+=”; x=nStr.拆分(“.”); x1=x[0]; x2=x.长度>1?”。“+x[1]:”; var rgx=/(\d+)(\d{3})/; while(rgx.测试(x1)){ x1=x1。替换(rgx,“$1”+”,“+”$2”); } 返回x1+x2; },javascript,Javascript,现在,如果我在文本框中键入987654321,它将是987654321 但如果我需要在文本中间进行编辑,比如将5改为0 文本将为987643210零,插入文本末尾 我需要它是987604321哪一部分的功能,我应该改变 我使用IE9 下面是一个示例您是否可以提供一个在或上带有标记的工作示例?嗯,我自己做了一个快速演示。我使用了与IE9兼容的oninput事件。看起来像预期的那样工作,只有一些需要解决的bug。请在你的问题中详细说明具体情况是什么,以及如何重现。嗯,这和我想要的不一样,文本字段是接

现在,如果我在文本框中键入987654321,它将是987654321

但如果我需要在文本中间进行编辑,比如将5改为0 文本将为987643210零,插入文本末尾 我需要它是987604321哪一部分的功能,我应该改变

我使用IE9


下面是一个示例

您是否可以提供一个在或上带有标记的工作示例?嗯,我自己做了一个快速演示。我使用了与IE9兼容的oninput事件。看起来像预期的那样工作,只有一些需要解决的bug。请在你的问题中详细说明具体情况是什么,以及如何重现。嗯,这和我想要的不一样,文本字段是接受任何东西。但从上面的函数来看,它只接受数字和。并每3位插入逗号“,”。我尝试在JSBIN或JSFIDL.NET上给出一个例子,因为我不能将TeXField的值传递给函数并让TestField的函数设置值。这是我当前的工作。如果你试图编辑或更改中间的一些数字,新的数字将在TeTeFieldEd的末尾得到略微的厌烦,并且只需使用OnPosit完全重整它。虽然这不是你想要的,但我认为这可能会有所帮助。如果它确实满足你的所有需求,请随意使用它,我会将其作为答案发布。和
//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;
                }