Created
September 29, 2018 21:16
-
-
Save alpap/aae8618fc366b480cdfd3b00d61566b7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// card reader | |
document.onkeypress = function(e) { | |
e = e || window.event; | |
var charCode = (typeof e.which == "number") ? e.which : e.keyCode; | |
// store it , in this example, i use localstorage | |
if(localStorage.getItem("card") && localStorage.getItem("card") != 'null') { | |
// append on every keypress | |
localStorage.setItem("card", localStorage.getItem("card") + String.fromCharCode(charCode)); | |
} else { | |
// remove localstorage if it takes 300 ms (you can set it) | |
localStorage.setItem("card", String.fromCharCode(charCode)); | |
setTimeout(function() { | |
localStorage.removeItem("card"); | |
}, 300); | |
} | |
// when reach on certain length within 300 ms, it is not typed by a human being | |
if(localStorage.getItem("card").length == 8) { | |
// do some validation | |
if(passedonvalidation){ | |
// do some action | |
} | |
} | |
} | |
// another solution | |
$(document).ready(function(){ | |
$('#creditCardNumber').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 ""; | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment