我是Javascript方面的新手。这是我的问题:
我希望从读卡器中获取信用卡信息,然后进行处理。到目前为止,我已经能够在HTML文本框字段中捕获虚拟信用卡数据 - 实际上它没有火箭科学,因为卡读卡器输入只是当卡通过读卡器刷卡时的一组键盘事件。问题是它只有在文本字段中有cursor focus
时才有效。如果我将文本字段转换为只读框,则它不起作用 - 这是我的确切要求。我应该可以屏蔽输入,显示几个*
,我应该能够使该字段不可编辑。我希望这可以使用放在文本框上的透明div
来完成 - 但我不知道如何实现。
我也对其他想法持开放态度。
答案 0 :(得分:4)
您可以使用javascript设置已禁用的文本字段的值,并通过document.onkeydown = function(e) { ... }
获取击键事件数据。不需要隐藏的div。
我假设您的页面上还有其他字段,这将使您很难知道何时捕获读卡器数据。您是否幸运,您的信用卡读卡器会发送一些独特的第一个字符,以便您知道键盘事件来自读卡器而不是用户按键?如果是这样,那么您可以听取这些特定的击键,这样您就不必担心设置焦点。否则,可以考虑像“读取信用卡”这样的按钮,其on("click")
功能设置为读取下一个xx数字。
以下是一些调试代码,您可以使用这些代码查看您的读者是否发送了您可以收听的任何唯一字符:
document.onkeydown = function(d) {
console.log( d.which ? d.which : window.event.keyCode);
};
可以想象,当使用阅读器时,还有一些其他独特的事件信息。也许请查看设备手册。
答案 1 :(得分:2)
扩展Zach所说的信用卡方面......
请查看the Wikipedia page on financial magnetic stripe cards,了解您将遇到的卡片曲目格式的说明。您的读者将在最后输出回车数据。
一种选择是扫描所有击键,如果检测到开始序列%B
开始缓冲,然后将其存储在收到回车符所需的位置。如果有人碰巧输入%B
,那么故障安全就是按键时间超时,因为读者输入的速度会比用户快得多。
%B4111111111111111^LASTNAME/FIRST I ^YYMM###..###?;4111111111111111=YYMM###..###?[CR]