最近做input输入的时候,需求是只能让用户输入数字和小数点后最多能输入两位。
开始的做法是监听keydown事件,获取keycode,这样控制用户只能输入数字,但是后来发现安卓手机
在微信浏览器里keycode获取失败了,keycode始终是0。
请教一下大家还有没有什么好点的办法能实现这个需求。
=============================
后来我做了一个keyup事件来,每次事件触发就检查是否符合格式要求,代码如下:
$("#money").keyup(function(){
var reg = /^\d+\.?(\d{1,2})?$/;
while (!reg.test($(this).val()) && $(this).val() != "") {
$(this).val(checkStr($(this).val()));
}
});
//检查是否符合金额格式:只能输入数字且最多保留小数点后两位
function checkStr(str) {
str = str.substring(0,str.length-1);
return str;
}
但是我这样做有一个坏处就是,假如我之前输入22222这样是符合输入格式的,但是如果我在中间加入一个非法字符就会将后面的全部删掉,例如我输入222a22这样,就会变成222这样.
移动开发我不太了解,但是实时校验输入值的话,我一般都是用onchange或者focus,在输入框失去焦点之后立即做判断,见MDN.
这里有个例子。