input文本框只能刷卡不能手动输入

最近在做一个B/S系统,遇到一问题:客户要求只能刷卡不能手动输入

到网上搜一下,没有找到好的方法,最后只能用延时来取巧,虽不能完全实现,但也还可以,呵呵

因为刷卡时触发了事件keypress、keyup、onkeydown,所以不能从这方面下手;

鉴于手动输入与刷卡的速度不一样,在以上onkeyup事件中加了一个延时:

<html>
<head>
<script>
//输入触发事件,延时0.5s失去焦点,然后进入焦点时清空文本框,达到目的
function test()
{
setTimeout(
"lostblur()",500);

}
//失去焦点
function lostblur()
{
document.getElementById(
"CardID").blur();
}

function getblur()
{
document.getElementById(
"CardID").value="";
}
</script>
</head>
<body>
<div>
请输入卡号:
<input id="CardID" type="text" onkeyup="test();" onfocus="getblur();" />
</div>

</body>
</html>

第一次写经验,写得不是很明白,见谅!!!

 

 

 

可能是写的不是很明白,很多博友没看懂,有必要解释一下:

以下是刷卡时触发的事件:

$(document).ready(function() {
    $("#MemPanel_Text_CardID").keypress(function(e) {
        var keyAscii = window.event ? e.keyCode : e.which;
        //if (keyAscii == 13) {
        //    MemPanel_SearchMem();
        }
    });
    $("#MemPanel_textBox_Key").keyup(function(e) {
        var keyAscii = window.event ? e.keyCode : e.which;
        //if (keyAscii == 13) {
        //    $("#MemPanel_button_Search").click();            
       // }
    });
});

当然也会触发keydown事件。

原本想在这几个事件上做手脚,想让输入无效,但这样也会让刷卡也无法输入,因为刷卡时是用这几个事件来输入的,也就是刷卡是通过这几个事件来实现刷卡的!!不知道说的明不明白,有用过刷卡机的博友应该会明白吧,呵呵~~~

有人说用readonly="readonly",本人试过,这样连刷卡也会不能输入了。

找不到好的方法,所以只好用上面所说的方法来取巧了,因为人为的手动输入比刷卡慢,比如输入10位数字,刷卡只用1 秒,而手动输入却要用3到4秒或更久。

刷卡时(比如刷出的是10位数),那么就要触发10次keypress,keydown,keyup事件,所以想出了一个取巧的方法,就是利用时间上的差别来达到目的。

 

如果刷卡要1秒,则定时1秒,那么1秒内keypress,keydown,keyup事件就会发生10次,向文本框输入10个数字,刚好刷卡完成,那么1秒后文本框就失去焦点

如果是手动输入,要用3到4秒,则还没有输入完成就文本框就失去了焦点,当你想继续输入时,文本框获得焦点时,原先输入文本框内的数字清空,这个就永远无法手动输入完整的卡号(10位字)。。。

原理大概是这样,不能完全实现,只能取个巧,解释得不是很清楚,见晾!!!

转载于:https://www.cnblogs.com/IT-SmallBird/archive/2011/09/09/2172878.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值