【发布时间】:2017-08-12 04:55:31
【问题描述】:
我有以下字段
<input type="number" id="input_6_cc_number" name="q6_invoiceAmount[cc_number]" class="form-textbox validate[required] cc_number" autocomplete="off" size="20" value="" data-component="cc_number" />
我在这里使用代码
$(document).ready(function(){
$('#input_6_cc_number').click(function(){
//document.getElementById('SwipeNowAlert').innerHTML = 'You may now swipe.';
}).blur(function(){
document.getElementById('SwipeNowAlert').innerHTML = 'Don\'t Swipe';
}).focus(function(){
document.getElementById('SwipeNowAlert').innerHTML = 'SWIPE NOW';
}).keyup(function(event) {
if (event.keyCode == 13) {
var ccNum = $('#credit-card-number').val();
var isCaretPresent = false;
var isEqualPresent = false;
if (ccNum.indexOf("^") != -1)
isCaretPresent = true
else
isCaretPresent = false;
if (ccNum.indexOf("=") != -1)
isEqualPresent = true
else
isEqualPresent = false;
//handle parsing differently depending on card format
if (isCaretPresent) {
var cardData = ccNum.split('^');
$("#first-name").val(formatFirstName(cardData[1]));
$("#last-name").val(formatLastName(cardData[1]));
var decryptedCardNumber = formatCardNumber(cardData[0]);
$("#card-number").val(decryptedCardNumber);
$("#card-type").val(getCardType(decryptedCardNumber));
$("#expiration-month").val(cardData[2].substring(2, 4));
$("#expiration-year").val(cardData[2].substring(0, 2));
} else if (isEqualPresent) {
var cardData = ccNum.split('=');
var decryptedCardNumber = formatCardNumber(cardData[0]);
$("#CardNumber").val(decryptedCardNumber);
$("#CardType").val(getCardType(decryptedCardNumber));
$("#ExpirationMonth").val(cardData[2].substring(2, 4));
$("#ExpirationYear").val(cardData[2].substring(0, 2));
}
} else {
return true;
}
});
function formatCardNumber(cardNum) {
var result = "";
result = cardNum.replace(/[^0-9]*/, "");
return result;
}
function formatFirstName(name) {
if (name.indexOf("/") != -1) {
var nameSplit = name.split('/');
return nameSplit[1];
} else {
return "";
}
}
function FormatLastName(name) {
if (name.indexOf("/") != -1) {
var nameSplit = name.split('/');
return nameSplit[0];
} else {
return "";
}
}
function getCardType(number) {
var re = new RegExp("^4");
if (number.match(re) != null)
return "Visa";
re = new RegExp("^(34|37)");
if (number.match(re) != null)
return "American Express";
re = new RegExp("^5[1-5]");
if (number.match(re) != null)
return "MasterCard";
re = new RegExp("^6011");
if (number.match(re) != null)
return "Discover";
return "";
}
});
我正在使用信用卡读卡器,但无法正确扫描。我为此使用 JQuery 3.2。我无法让点击功能出现,这应该提醒我滑动、不要滑动或现在滑动。感谢您的帮助
【问题讨论】:
-
他可能使用 PHP 中的表单
-
正确的 SsJVasto
-
@Machavity 读卡器(或条形码扫描仪)通常像 HID 一样被检测到,并生成纯文本(就像使用键盘输入一样)。您可以使用 Javascript 解析原始输出并填充所需的字段。如果没有读者生成的样本,很难创建解析字符串(我会使用正则表达式)......
-
@MHeredia 所有事件都触发了吗?
标签: javascript jquery credit-card