Validating a Credit Card Number with JavaScript

Posted: Tue, Mar 8 05:50 PM (PST)

An easy way to validate credit card number with one function in JavaScript

function isValidCardNumber(cardNumber) {
	var nCheck = 0;
	var nDigit = 0;
	var bEven = false;

	for (n = cardNumber.length - 1; n >= 0; n--) {
		var cDigit = cardNumber.charAt(n);
		if (isDigit(cDigit)) {
			var nDigit = parseInt(cDigit, 10);
			if (bEven) {
				if ((nDigit *= 2) > 9)
					nDigit -= 9;
			}
			nCheck += nDigit;
			bEven = ! bEven;
		}
		else if (cDigit != ' ' && cDigit != '.' && cDigit != '-') {
			return false;
		}
	}
	return (nCheck % 10) == 0;
}
function isDigit(c) {
	var strAllowed = "1234567890";
	return (strAllowed.indexOf(c) != -1);
}
function isCardTypeCorrect(cardNumber, type) {
	var nLen = 0;
	for (n = 0; n < cardNumber.length; n++) {
		if (isDigit(cardNumber.substring(n, n + 1)))
			++nLen;
	}

	if (type == 'Visa')
		return ((cardNumber.substring(0, 1) == '4') && (nLen == 13 || nLen == 16));
	else if (type == 'Amex')
		return ((cardNumber.substring(0, 2) == '34' || cardNumber.substring(0, 2) == '37') && (nLen == 15));
	else if (type == 'Master Card')
		return ((cardNumber.substring(0, 2) == '51' || cardNumber.substring(0, 2) == '52'
			|| cardNumber.substring(0, 2) == '53' || cardNumber.substring(0, 2) == '54'
			|| cardNumber.substring(0, 2) == '55') && (nLen == 16));
	else
		return false;

}
Tags: