5

私はJavascriptの面では初心者です。これが私の問題です:

カードリーダーからクレジットカード情報を取得して処理したいのですが。これまでのところ、HTMLテキストボックスフィールドでダミーのクレジットカードデータをキャプチャすることができました。実際にはロケット科学ではありません。カードリーダーの入力は、カードがカードリーダーを介してスワイプされたときのキーボードイベントのセットにすぎません。問題はcursor focus、テキストフィールドにが存在する場合にのみ機能することです。テキストフィールドを読み取り専用ボックスにすると、機能しません。これが私の正確な要件です。入力をマスクし、いくつかのを表示*して、フィールドを編集不可にすることができるはずです。テキストボックスに配置された透明部分を使用してこれを実行できることを望んでいますがdiv、それをどのように実現できるかわかりません。

私は他のアイデアにもオープンです。

4

2 に答える 2

5

You can use javascript to set a disabled text field's value, and to get keystroke event data through document.onkeydown = function(e) { ... }. No need for hidden divs.

I assume you have other fields on your page, which will make it difficult to know when to capture the card reader data. Are you fortunate enough that your credit card reader sends some unique first character(s) so you know the keyboard events are coming from the reader and not user keystrokes? If so, then you can listen for those particular key strokes so you don't have to worry about setting focus. Otherwise maybe consider a button like "Read Credit Card" that has an on("click") function set to read the next xx digits.

Here's some debugging code you can use to see if your reader sends any unique characters that you can listen for:

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

It's conceivable that there's some other unique event information when the reader is used. Maybe check the device's manual.

于 2012-05-11T00:34:43.543 に答える
3

ザックが言ったことのクレジットカード側を拡張すると...

遭遇するカード トラック形式の説明については、金融磁気ストライプ カードに関するウィキペディアのページを参照してください。リーダーは、最後にキャリッジ リターンを付けてデータを出力します。

1 つのオプションは、すべてのキーストロークをスキャンし、開始シーケンスを検出した場合は%Bバッファリングを開始し、キャリッジ リターンを受信したときに必要な場所に保存することです。また、誰かが入力した場合のフェイルセーフ%Bは、リーダーがユーザーよりもはるかに速く入力するため、キーストロークのタイムアウトを設定することです。

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