5

我是 Javascript 方面的新手。这是我的问题:

我希望从读卡器中获取信用卡信息,然后对其进行处理。到目前为止,我已经能够在 HTML 文本框字段中捕获虚拟信用卡数据 - 实际上这不是火箭科学,因为读卡器输入只是当卡片通过读卡器刷卡时的一组键盘事件。问题是它仅在cursor focus文本字段上有 a 时才有效。如果我将文本字段变成只读框,它就不起作用 - 这是我的确切要求。我应该能够屏蔽输入,显示几个*s 并且我应该能够使该字段不可编辑。我希望这可以使用div放置在文本框上的透明来完成 - 但我不知道如何实现。

我也对其他想法持开放态度。

4

2 回答 2

5

您可以使用 javascript 设置禁用文本字段的值,并通过document.onkeydown = function(e) { ... }. 不需要隐藏的 div。

我假设您的页面上有其他字段,这将使您很难知道何时捕获读卡器数据。您是否足够幸运,您的信用卡读卡器会发送一些独特的第一个字符,以便您知道键盘事件来自读卡器而不是用户击键?如果是这样,那么您可以聆听那些特定的击键,这样您就不必担心设置焦点。否则,可能会考虑一个像“读取信用卡”这样的按钮,它的on("click")功能设置为读取下一个 xx 位。

以下是一些调试代码,您可以使用它来查看您的阅读器是否发送了您可以收听的任何独特字符:

document.onkeydown = function(d) {
    console.log( d.which ? d.which : window.event.keyCode);
};

可以想象,在使用阅读器时,还有一些其他独特的事件信息。也许检查设备的手册。

于 2012-05-11T00:34:43.543 回答
3

为了扩展扎克所说的信用卡方面......

请查看有关金融磁条卡的维基百科页面,了解您将遇到的卡磁道格式的描述。您的阅读器将在最后输出带有回车的数据。

一种选择是扫描所有击键,如果您检测到启动序列%B开始缓冲,然后在收到回车时将其存储在您需要的位置。如果有人碰巧键入,那么一个故障保险%B就是击键超时,因为阅读器的键入速度会比用户快得多。

%B4111111111111111^LASTNAME/FIRST I ^YYMM###..###?;4111111111111111=YYMM###..###?[CR]
于 2012-05-27T10:09:47.887 回答