JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://cdn.rawgit.com/digitalBush/jquery.maskedinput/1.4.1/dist/jquery.maskedinput.min.js"></script>
<form id="validateForm" method="POST" autocomplete="off">
<div class="owner">
<label class="param">Владелец</label>
<input id="cardHolder" data-validate="required latin twoWords" class="need-validate" value="" placeholder="Ivan Ivanov" type="text">
<div id="errName" class="error-message"></div>
</div>
<div class="number-card">
<label class="param">Номер банковской карты</label>
<input id="cardNumber" data-validate="required num" class="need-validate" value="" type="text">
<div id="errCard" class="error-message"></div>
</div>
<div class="select-form">
<div class="flex-itm">
<div class="margin-right">
<label class="param">Срок действия</label>
<div class="clear"></div>
<select class="select-input">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option...
CSS
/*validate*/
.error{
color:red;
}
.error{
border-color:red;
}
.error-message{
color:red;
font-size: 12px;
text-transform: none;
position:absolute;
}
#cardHolder{
text-transform: uppercase;
}
JavaScript
'use strict';
Date.prototype.get2Year = function() {
return this.getFullYear().toString().substr(2);
};
$(function($){
$("#acctNumber").mask("999999");
$("#sumCheck").mask("99999");
$("#cardNumber").mask("9999 9999 9999 9999?999");
$("#cardCode").mask("999");
var $showDivButton, $hiddenBlock, $closeButton;
var duration = 1 * 1000;
$showDivButton = $('#about');
$hiddenBlock = $('#showDiv');
$closeButton = $('#closeButton');
$showDivButton.on('click', function() {
$hiddenBlock.stop().slideToggle(duration);
});
$closeButton.on('click', function() {
$hiddenBlock.stop().slideUp(duration);
});
var selectOption = document.createElement('option'),
optionYear = document.getElementById('optionYear'),
currentYear = new Date().get2Year();
for(var i = 0; i <= 10; i++){
var newOption = selectOption.cloneNode(),
year = currentYear++;
newOption.innerHTML = year;
newOption.value = year;
optionYear.appendChild(newOption);
}
var validator = {
required: function($el) {
return $el.val() != '';
},
num: function($el) {
var re = /[0-9]/;
return re.test($el.val());
},
latin: function($el) {
var re = /[a-zA-Z]/;
return re.test($el.val());
},
twoWords: function($el) {
var re = /(\w+) (\w+)/;
return re.test($el.val());
},
markAsError: function($el, error_msg) {
$el.addClass('error').next().html(error_msg);
},
messages: function(rules) {
switch(rules) {
case 'required':
return 'Поле не заполнено';
break;
case 'num':
return 'Поле должно содержать только цифры';
break;
case 'latin':
return 'Поле должно содержать...