2012-05-10 43 views
4

我是新手根據Javascript的。這是我的問題:從讀卡器的信用卡信息捕獲到一個不可編輯的文本字段

我希望從卡讀取器捕獲信用卡信息,然後處理它。到目前爲止,我已經能夠在HTML文本框領域捕獲虛擬信用卡數據 - 它實際上沒有火箭科學,因爲讀卡器的輸入只是一組鍵盤事件,當一張卡通過讀卡器刷卡時。問題是,它只在文本字段上有cursor focus時才起作用。如果我將文本字段變成只讀框,它不起作用 - 這是我的確切要求。我應該能夠掩蓋輸入,顯示幾個* s,我應該能夠使該字段不可編輯。我希望這可以使用放置在文本框上的透明div完成 - 但我不知道如何實現。

我也接受其他想法。

+0

聽起來好像您希望文本字段是可編輯的(通過來自讀卡器的鍵盤事件)和只讀? – KatieK

+0

恩......這是我知道的一種矛盾 - 但這裏是處理:我需要這種方式,因爲用戶不應該能夠編輯數據。此外,只有在某個領域存在「焦點」時才能使用信用卡捕獲功能,或者在任何地方進行信用卡捕獲。我的意思是,我試圖打開一個普通的文本編輯器,信用卡讀卡器能夠將數據傳輸到光標放置在文本編輯器中的位置。這就是我卡住的地方 - 我如何保持光標焦點,但同時使字段不可編輯?任何可以幫助我的JavaScript魔術? – trishulpani

+2

請注意,沒有辦法使提交的瀏覽器表單真正無法編輯,您只能防止意外編輯而非惡意文件並驗證服務器端的結果。 –

回答

4

您可以使用javascript設置禁用的文本字段的值,並通過document.onkeydown = function(e) { ... }獲取擊鍵事件數據。不需要隱藏的div。

我假設你在你的頁面上有其他字段,這將使得很難知道何時捕獲讀卡器數據。您是否幸運,您的信用卡讀卡器會發送一些獨特的第一個字符,以便您知道鍵盤事件來自讀卡器而不是用戶按鍵?如果是這樣,那麼你可以聽那些特定的擊鍵,所以你不必擔心設置焦點。否則,可以考慮一個像「讀取信用卡」這樣的按鈕,該按鈕將on("click")函數設置爲讀取下一個xx數字。

這裏的一些調試代碼,你可以用它來看看你的讀者將可以監聽任何獨特的字符:

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

這是可以想象的還有其他一些獨特的事件信息被用來閱讀器時。也許檢查設備的手冊。

+0

謝謝你的建議。我會嘗試一下 ! – trishulpani

2

爲了擴大在什麼扎克曾表示,信用卡側...

請看the Wikipedia page on financial magnetic stripe cards爲卡軌格式,你會遇到一個描述。讀者將在最後輸出帶回車符的數據。

一種選擇是掃描所有擊鍵,並且如果檢測到啓動序列%B開始緩衝,然後將其存儲在收到回車符所需的位置。如果有人碰巧鍵入%B,那麼故障安全是因爲讀者輸入的速度比用戶快得多,所以鍵盤輸出時間會很長。

%B4111111111111111^LASTNAME/FIRST I ^YYMM###..###?;4111111111111111=YYMM###..###?[CR]