Javascript onKeyUp事件在用户输入小数后不执行函数

Javascript onKeyUp事件在用户输入小数后不执行函数,javascript,Javascript,我有一个onKeyUp事件,它调用一个函数,当用户输入3个或更多数字并将值设置为2个小数位时,该函数会插入一个小数位 e、 g.用户类型123-->1.23;用户类型1234-->12.34 这就是功能: function insertDecimal(x) { if (x.length > 2) { x = x.replace(/[^a-zA-Z 0-9]+/g,''); var xx = x.substring(0,x.length-2) + ".

我有一个onKeyUp事件,它调用一个函数,当用户输入3个或更多数字并将值设置为2个小数位时,该函数会插入一个小数位

e、 g.用户类型123-->1.23;用户类型1234-->12.34

这就是功能:

function insertDecimal(x) {
    if (x.length > 2) {
        x = x.replace(/[^a-zA-Z 0-9]+/g,'');
        var xx = x.substring(0,x.length-2) + "." + x.substring(x.length - 2,x.length);
        }
    else {
        var xx = x;
        }
    return xx;
        }
就目前而言,没关系。但我想在用户手动输入时将小数点设为陷阱。e、 g

每件10.99美元 用户密钥1099得到10.99

每件10.999美元 用户密钥10.999获得10.999

物品是10美元 用户密钥10。得10分

我可以在事件处理程序中捕获用户的小数:

var keycode = event.keyCode;
if (keycode != 110){
    insertDecimal(someUserKeyValue);
    }

但是,当用户下一次按下一个数字时,函数将返回并执行,这不是我想要的。我不知所措。

为什么不将处理程序附加到
onchange
?因此,输入的处理更容易,因为用户已经输入了所需的输入

检查此场景:
用户希望输入100.30,所以他输入了
100.30
。在您的实现中,当用户达到第二个零时,文本框的值将变为
10.0
,如果是这样,如果用户的下一个输入是十进制
本身,您将如何实现十进制功能?当然,除非你要求用户只能输入两位数的整数和任意位数的小数(
xx.xxxxxx

,否则我必须这样做。看来一定有更好的解决办法。