最近在做一个项目,其中有个功能需要自动输入数据(扫码枪或者是IC读卡器)。用input每次都会弹出虚拟键盘,非常不方便,然后在论坛里面找到加上readonly就行,实测不行。最后发现扫码枪(部分)、IC读卡器是模拟键盘输入的,就想到了另外一个解决方案。
问题:禁止安卓输入框弹出软键盘
解决思路:用jQuery获取按键值,然后把按键值转换回按键,之后累加到自己想要的数位后可以直接填充到相应位置或操作。
代码如下:
card_id = "";
old_card_id = "";
$("body").on("keyup", function(event) {//获取键值
old_card_id = "";
switch(event.which){//键值转换为所按按键(下面为数字0-9键值)
case 48:
old_card_id = 0;
break;
case 49:
old_card_id = 1;
break;
case 50:
old_card_id = 2;
break;
case 51:
old_card_id = 3;
break;
case 52:
old_card_id = 4;
break;
case 53:
old_card_id = 5;
break;
case 54:
old_card_id = 6;
break;
case 55:
old_card_id = 7;
break;
case 56:
old_card_id = 8;
break;
case 57:
old_card_id = 9;
break;
default:
card_id = "";
document.onkeydown=null;
break;
};
card_id = card_id + old_card_id;//把转换后的按键累计成字符串
if (card_id.length == 10) {//需要的字符个数
console.log(card_id);
alert(card_id);
card_id = "";
}if(card_id.length > 10){//本处可不需要,因为我的IC读卡器是18位的,我只需要10位数字,所以这里我过滤了超过10位数字的字符串
card_id = "";
}
});
最后,也许代码有些乱或者冗余。各位需要的小伙伴看一下思路就行。
3 个评论
要回复文章请先登录或注册
huangzoro
DCloud_UNI_GSQ
潘潘潘潘潘