用户输入十进制后,onKeyUp事件不执行函数

时间:2014-09-23 13:22:57

标签: 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) + "." + x.substring(x.length - 2,x.length);
        }
    else {
        var xx = x;
        }
    return xx;
        }

就目前而言,这没关系。但是我想在手动用户输入小数点时捕获小数点。例如

项目是10.99美元 用户密钥1099得到10.99

项目是10.999美元 用户密钥10.999获得10.999

项目是10.00美元 用户密钥10.得到10

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

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

但是当用户下次按下一个数字时,该功能会重新启动并执行,这不是我想要的。我不知所措。

1 个答案:

答案 0 :(得分:0)

为什么不在onchange附加处理程序?因此,输入的处理更容易,因为用户已经输入了他想要的输入。

检查这种情况: 用户希望输入100.30,因此他输入了100.30。在你的实现中,当用户点击第二个零时,文本框的值将变为10.0,如果发生了什么,如果用户的下一个输入是十进制{{1,那么你将如何实现十进制功能?本身?好吧,除非您当然要求用户只能输入2位数的整数和任意位数作为小数位(.