Захват информации о кредитной карте из устройства чтения карт в не редактируемое текстовое поле

Я новичок с точки зрения Javascript. Вот моя проблема:

Я хочу получить информацию о кредитной карте из устройства чтения карт и затем обработать ее. До сих пор мне удавалось собирать фиктивные данные кредитных карт в поле текстового поля HTML - на самом деле это не ракетостроение, потому что ввод устройства чтения карт - это просто набор событий клавиатуры, когда карта проходит через устройство чтения карт. Проблема в том, что он работает только тогда, когда есть cursor focus в текстовом поле. Если я превращу текстовое поле в поле только для чтения, оно не будет работать - это мое точное требование. Я должен быть в состоянии замаскировать вход, показать пару *и я должен быть в состоянии сделать поле недоступным для редактирования. Я надеюсь, что это можно сделать с помощью прозрачного div помещен в текстовое поле - но я понятия не имею, как этого можно достичь.

Я открыт для других идей тоже.

2 ответа

Решение

Вы можете использовать JavaScript, чтобы установить значение отключенного текстового поля и получить данные о событиях нажатия клавиш через document.onkeydown = function(e) { ... }, Нет необходимости в скрытых div.

Я предполагаю, что у вас есть другие поля на вашей странице, что затруднит узнать, когда собирать данные устройства чтения карт. Вам достаточно повезло, что ваш читатель кредитной карты отправляет несколько уникальных первых символов, чтобы вы знали, что события клавиатуры происходят от читателя, а не нажатия клавиш пользователя? Если это так, то вы можете прослушивать эти конкретные нажатия клавиш, чтобы вам не пришлось беспокоиться о настройке фокуса. В противном случае, возможно, рассмотрите кнопку типа "Читать кредитную карту", ​​которая имеет on("click") функция настроена на чтение следующих хх цифр.

Вот некоторый код отладки, который вы можете использовать, чтобы увидеть, отправляет ли ваш читатель какие-либо уникальные символы, которые вы можете прослушивать:

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

Вполне возможно, что есть некоторая другая уникальная информация о событии, когда читатель используется. Может быть, проверить руководство устройства.

Чтобы расширить на стороне кредитной карты то, что сказал Зак...

Пожалуйста, посмотрите на страницу Википедии о финансовых карточках с магнитной полосой для описания форматов дорожек, с которыми вы столкнетесь. Ваш читатель выведет данные с возвратом каретки в конце.

Одним из вариантов будет сканирование всех нажатий клавиш, и если вы обнаружите последовательность запуска %B начните буферизацию, а затем сохраните ее там, где вам нужно, когда будет получен возврат каретки. Также отказоустойчив, если кто-то набирает текст %B это время ожидания нажатия клавиши, поскольку читатель будет печатать намного быстрее, чем пользователь.

%B4111111111111111^LASTNAME/FIRST I ^YYMM###..###?;4111111111111111=YYMM###..###?[CR]
Другие вопросы по тегам