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; }
现在,如果我在文本框中键入987654321,它将是987654321 但如果我需要在文本中间进行编辑,比如将5改为0 文本将为987643210零,插入文本末尾 我需要它是987604321哪一部分的功能,我应该改变 我使用IE9Javascript 如何使文本中间的文本字段可编辑 //此函数的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。请在你的问题中详细说明具体情况是什么,以及如何重现。嗯,这和我想要的不一样,文本字段是接
下面是一个示例您是否可以提供一个在或上带有标记的工作示例?嗯,我自己做了一个快速演示。我使用了与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;
}