Javascript Java脚本onkeyDown repalce字符函数在Internet Explorer 9上运行不正常

Javascript Java脚本onkeyDown repalce字符函数在Internet Explorer 9上运行不正常,javascript,replace,onkeydown,Javascript,Replace,Onkeydown,我有一个用于十进制数字的asp文本框。 我有一个jscript函数来替换num pad。由用户文化中使用的十进制分隔符指定的字符ex:en US->十进制分隔符:。pt->十进制分隔符:',' 以下是我的功能: //method that substitutes num pad '.' with the current user culture decimal separator when num pad '.' key is hit function onKeyDownPutDecimalS

我有一个用于十进制数字的asp文本框。 我有一个jscript函数来替换num pad。由用户文化中使用的十进制分隔符指定的字符ex:en US->十进制分隔符:。pt->十进制分隔符:','

以下是我的功能:

//method that substitutes num pad '.' with the current user culture decimal separator when num pad '.' key is hit

function onKeyDownPutDecimalSeparator(e, textBox) {

    var unicode = e.charCode ? e.charCode : e.keyCode;
    if (unicode == 110) {

        e.returnValue = false;
        e.cancel = true;

        textBox.value = textBox.value.concat(decimalSeparator);
    }

}
这在大多数浏览器(包括chrome和IE8)上都可以正常工作,但在IE9上,而不是在其他浏览器上 更换,对于ex.1.2->1,2, 正在做一些类似于:

1.2->1.2,当文本框失去焦点时,1,2

最后的值1,2是我想要的,但是中间的一步,当用户可以看到1,2时,它只是太满了

有什么提示吗

谢谢

而不是

textBox.value = textBox.value.concat(decimalSeparator);
试一试


不起作用,代码执行时没有“.”但是,在我看来“.”只在插入字符之前写入。据我所知,不能在插入字符之前替换字符。请尝试在onKeyUp上调用此函数。似乎是一个更干净的解决方案。哦,您还应该尝试e.preventDefault,它应该禁用插入。这应该在IE9中工作,因为我在OSX atm上,所以无法测试,但它应该像ife.preventDefault e.preventDefault;为了防止旧版IE产生错误,onKeyUp是一种解决方法,它适用于我测试的每个浏览器。这不是我想要的解决方案,但现在改变比进一步改变要好。tks
textBox.value = textBox.value.replace('.', decimalSeparator);