Format Take 3

by TokenEx Support

HTML

<input type="text" id="data" maxlength="25" />

JavaScript

data = document.getElementById("data");

function addEventListener(el, eventName, handler) {
  if (el.addEventListener) {
    el.addEventListener(eventName, handler, false);
  } else {
    el.attachEvent("on" + eventName, function() {
      handler.call(el);
    });
  }
}

function preventDefault(evt) {
  var ev = evt !== undefined ? evt : window.event;
  if (ev.preventDefault) {
    ev.preventDefault();
  } else {
    ev.returnValue = false;
  }
  return ev;
}

function arrayContains(needle, arrhaystack) {
  return (arrhaystack.indexOf(needle) > -1);
}
addEventListener(data, "keypress", limitNumericInput);
//addEventListener(data, "keypress", limitLength);
addEventListener(data, "keypress", formatCreditCard);
//addEventListener(data, "keydown", handleBackSpace);
//addEventListener(data, "paste", reFormatCreditCard);
//addEventListener(data, "change", reFormatCreditCard);
//addEventListener(data, "input", reFormatCreditCard);


//data.onkeypress = restrictNumeric;
//data.onkeypress = restrictCardNumber;
//data.onkeypress = formatCardNumber;
//data.onkeydown = formatBackCardNumber;
//data.onpaste = reFormatCardNumber;
//data.onchange = reFormatCardNumber;
//data.oninput = reFormatCardNumber;


//https://github.com/stripe/jquery.payment/blob/master/lib/jquery.payment.js


function limitNumericInput(e) {
  //console.log("limitNumericInput");
  var input;
  if (e.metaKey || e.ctrlKey) {
    return true;
  }
  if (e.which === 32) {
    preventDefault(e);
    //return false;
  }
  if (e.which === 0) {
    return true;
  }
  if (e.which < 33) {
    return true;
  }
  input = String.fromCharCode(e.which);
  //console.log(!!/[\d\s]/.test(input));
  //return !!/[\d\s]/.test(input)
  if (!/[\d\s]/.test(input)) {
    preventDefault(e);
    //return false;
  }
  //return true;
}

function limitLength(e) {
  console.log("limitLength");
  var target = e.currentTarget;
  var digit = String.fromCharCode(e.which);
  if (!/^\d+$/.test(digit)) {
    return;
  }
  if...