UNPKG

formvalidation

Version:

The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks

217 lines (208 loc) 9.53 kB
<!DOCTYPE html> <html> <head> <title>FormValidation demo</title> <link rel="stylesheet" href="../vendor/bootstrap/css/bootstrap.css"/> <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css" /> <link rel="stylesheet" href="../dist/css/formValidation.css"/> <script type="text/javascript" src="../vendor/jquery/jquery.min.js"></script> <script type="text/javascript" src="../vendor/bootstrap/js/bootstrap.min.js"></script> <script type="text/javascript" src="../dist/js/formValidation.js"></script> <script type="text/javascript" src="../dist/js/framework/bootstrap.js"></script> <style type="text/css"> .form-control-feedback { top: 10px; } </style> </head> <body> <div class="container"> <div class="row"> <section> <div class="col-sm-8 col-sm-offset-2"> <div class="page-header"> <h2>Credit card information</h2> </div> <form id="paymentForm" method="post" class="form-horizontal" action="target.php"> <div class="form-group"> <label class="col-sm-3 control-label">Card holder</label> <div class="col-sm-5"> <input type="text" class="form-control" id="cardHolder" /> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">Credit card number</label> <div class="col-sm-5"> <input type="text" class="form-control" id="ccNumber" /> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">Expiration</label> <div class="col-sm-4"> <input type="text" class="form-control" placeholder="Month" data-stripe="exp-month" /> </div> <div class="col-sm-4"> <input type="text" class="form-control" placeholder="Year" data-stripe="exp-year" /> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">CVV</label> <div class="col-sm-2"> <input type="text" class="form-control cvvNumber" name="cvv" /> </div> </div> <div class="form-group"> <div class="col-sm-9 col-sm-offset-3"> <button type="submit" class="btn btn-primary">Pay</button> </div> </div> </form> </div> </section> </div> </div> <script type="text/javascript"> $(document).ready(function() { $('#paymentForm') .formValidation({ icon: { valid: 'fa fa-check', invalid: 'fa fa-times', validating: 'fa fa-refresh' }, fields: { cardHolder: { selector: '#cardHolder', validators: { notEmpty: { message: 'The card holder is required' }, stringCase: { message: 'The card holder must contain upper case characters only', case: 'upper' } } }, ccNumber: { selector: '#ccNumber', validators: { notEmpty: { message: 'The credit card number is required' }, creditCard: { message: 'The credit card number is not valid' } } }, expMonth: { selector: '[data-stripe="exp-month"]', validators: { notEmpty: { message: 'The expiration month is required' }, digits: { message: 'The expiration month can contain digits only' }, callback: { message: 'Expired', callback: function(value, validator) { value = parseInt(value, 10); var year = validator.getFieldElements('expYear').val(), currentMonth = new Date().getMonth() + 1, currentYear = new Date().getFullYear(); if (value < 0 || value > 12) { return false; } if (year == '') { return true; } year = parseInt(year, 10); if (year > currentYear || (year == currentYear && value > currentMonth)) { validator.updateStatus('expYear', 'VALID'); return true; } else { return false; } } } } }, expYear: { selector: '[data-stripe="exp-year"]', validators: { notEmpty: { message: 'The expiration year is required' }, digits: { message: 'The expiration year can contain digits only' }, callback: { message: 'Expired', callback: function(value, validator) { value = parseInt(value, 10); var month = validator.getFieldElements('expMonth').val(), currentMonth = new Date().getMonth() + 1, currentYear = new Date().getFullYear(); if (value < currentYear || value > currentYear + 10) { return false; } if (month == '') { return false; } month = parseInt(month, 10); if (value > currentYear || (value == currentYear && month > currentMonth)) { validator.updateStatus('expMonth', 'VALID'); return true; } else { return false; } } } } }, cvvNumber: { selector: '.cvvNumber', validators: { notEmpty: { message: 'The CVV number is required' }, cvv: { message: 'The value is not a valid CVV', creditCardField: 'ccNumber' } } } } }) .on('success.validator.fv', function(e, data) { if (data.field === 'ccNumber' && data.validator === 'creditCard') { var $icon = data.element.data('fv.icon'); switch (data.result.type) { case 'AMERICAN_EXPRESS': $icon.removeClass().addClass('form-control-feedback fa fa-cc-amex'); break; case 'DISCOVER': $icon.removeClass().addClass('form-control-feedback fa fa-cc-discover'); break; case 'MASTERCARD': $icon.removeClass().addClass('form-control-feedback fa fa-cc-mastercard'); break; case 'VISA': $icon.removeClass().addClass('form-control-feedback fa fa-cc-visa'); break; default: $icon.removeClass().addClass('form-control-feedback fa fa-credit-card'); break; } } }) .on('err.field.fv', function(e, data) { if (data.field === 'ccNumber') { var $icon = data.element.data('fv.icon'); $icon.removeClass().addClass('form-control-feedback fa fa-times'); } }); }); </script> </body> </html>