Tiny JS Library To Create Interactive Payment Form – DatPayment

Category: Form , Javascript | September 17, 2018
Views Total:5,371 views
Official Page:Go to website
Last Update:September 17, 2018


Tiny JS Library To Create Interactive Payment Form – DatPayment


DatPayment is a lightweight JS library used to create an interactive payment form that enables the user to type credit card information in a convenient way. Requires the familiar Stripe.js library.


  • Auto swaps credit card image based on your input.
  • Formats credit card numbers.
  • Validates the credit card numbers and expiration dates.

How to use it:

Place the core style sheet DatPayment.css in the head section of the html page.

<link rel="stylesheet" href="DatPayment.css">
<form action="/" method="POST" id="payment-form" class="datpayment-form">
  <div class="dpf-title">
      Payment by credit card
      <div class="accepted-cards-logo"></div>
  <div class="dpf-card-placeholder"></div>
  <div class="dpf-input-container">
      <div class="dpf-input-row">
          <label class="dpf-input-label">Credit Card Number</label>
          <div class="dpf-input-container with-icon">
              <span class="dpf-input-icon"><i class="fa fa-credit-card" aria-hidden="true"></i></span>
              <input type="text" class="dpf-input" size="20" data-type="number">
      <div class="dpf-input-row">
          <div class="dpf-input-column">
              <input type="hidden" size="2" data-type="exp_month" placeholder="MM">
              <input type="hidden" size="2" data-type="exp_year" placeholder="YY">
              <label class="dpf-input-label">Expiration Date</label>
              <div class="dpf-input-container">
                  <input type="text" class="dpf-input" data-type="expiry">
          <div class="dpf-input-column">
              <label class="dpf-input-label">Code</label>
              <div class="dpf-input-container">
                  <input type="text" class="dpf-input" size="4" data-type="cvc">
      <div class="dpf-input-row">
          <label class="dpf-input-label">Full Name</label>
          <div class="dpf-input-container">
              <input type="text" size="4" class="dpf-input" data-type="name">
      <button type="submit" class="dpf-submit">
              <span class="btn-active-state">
              <span class="btn-loading-state">
                  <i class="fa fa-refresh "></i>

Load the necessary Stripe.js in the html page.

<script src="https://js.stripe.com/v2/"></script>

Load the DatPayment.js at the bottom of the page.

<script src="DatPayment.js"></script>

Active the payment form.

var payment_form = new DatPayment({
  form_selector: '#payment-form',
  card_container_selector: '.dpf-card-placeholder',
  number_selector: '.dpf-input[data-type="number"]',
  date_selector: '.dpf-input[data-type="expiry"]',
  cvc_selector: '.dpf-input[data-type="cvc"]',
  name_selector: '.dpf-input[data-type="name"]',
  submit_button_selector: '.dpf-submit',
  placeholders: {
      number: '•••• •••• •••• ••••',
      expiry: '••/••',
      cvc: '•••',
      name: 'DUPONT'
  validators: {
      number: function(number){
          return Stripe.card.validateCardNumber(number);
      expiry: function(expiry){
          var expiry = expiry.split(' / ');
          return Stripe.card.validateExpiry(expiry[0]||0,expiry[1]||0);
      cvc: function(cvc){
          return Stripe.card.validateCVC(cvc);
      name: function(value){
          return value.length > 0;
var demo_log_div = document.getElementById("demo-log");
  var form_data = e.detail;
  demo_log_div.innerHTML += "<br>"+JSON.stringify(form_data);
  var input = e.detail;
  demo_log_div.innerHTML += "<br>field_validation_success:"+input.getAttribute("data-type");
  var input = e.detail;
  demo_log_div.innerHTML += "<br>field_validation_failed:"+input.getAttribute("data-type");

All default options.

formatting: true,
formSelectors: {
  numberInput: 'input[name="number"]',
  expiryInput: 'input[name="expiry"]',
  cvcInput: 'input[name="cvc"]',
  nameInput: 'input[name="name"]'
cardSelectors: {
  cardContainer: '.jp-card-container',
  card: '.jp-card',
  numberDisplay: '.jp-card-number',
  expiryDisplay: '.jp-card-expiry',
  cvcDisplay: '.jp-card-cvc',
  nameDisplay: '.jp-card-name'
messages: {
  validDate: 'valid\nthru',
  monthYear: 'month/year'
placeholders: {
  number: '&bull;&bull;&bull;&bull; &bull;&bull;&bull;&bull; &bull;&bull;&bull;&bull; &bull;&bull;&bull;&bull;',
  cvc: '&bull;&bull;&bull;',
  expiry: '&bull;&bull;/&bull;&bull;',
  name: 'Full Name'
classes: {
  valid: 'jp-card-valid',
  invalid: 'jp-card-invalid'
debug: false



  • fix : expiry date not valid when placeholder autocomplete is not used (not compatible browsers)

You Might Be Interested In:

One thought on “Tiny JS Library To Create Interactive Payment Form – DatPayment

Leave a Reply