Luhn Algorithm

by hakan

HTML

<form id="credit-card-entry-form" method="POST">
  <input type="text" name="credit-card-number" placeholder="Enter your credit card number here" />
  <input type="submit" value="Submit" />
</form>

JavaScript

$(document).ready(function() {
  $('#credit-card-entry-form').submit(function(e) {
    e.preventDefault();
    var creditCardNumber = $('input[name="credit-card-number"]').val();

    is_luhn_valid(creditCardNumber);
  });
});

/**
 * Luhn Test
 * https://gist.github.com/ShirtlessKirk/2134376
 */
var luhnChk = (function(arr) {
  return function(ccNum) {
    var
      len = ccNum.length,
      bit = 1,
      sum = 0,
      val;

while (len) {
      val = parseInt(ccNum.charAt(--len), 10);
      console.log(val);
      if (val !== NaN)
        sum += (bit ^= 1) ? arr[val] : val;
    }

    return sum && sum % 10 === 0;
  };
}([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]));

function is_luhn_valid(cardNumber) {
  if (luhnChk(cardNumber) === true) {
    console.log("VALID.");
  } else {
    console.log("Credit card number is invalid.");
  }
}