$(function () { var input_selector = '[data-validate]'; var form_selector = '[data-validate-submit]'; var functions = { checked: function (input, $input) { return $input.prop('checked'); }, password: function (input, $input) { var $password_input = $input.closest('form').find('input[data-validate="passwordRepeat"]'); if (input && String(input).length >= 6) { validate.call($password_input); return true; } return false; }, passwordRepeat: function (input, $input) { var $password_input = $input.closest('form').find('input[data-validate="password"]'); if ($password_input.val() === input) { return true; } return false; }, string: function (input) { if (input && String(input).length > 0) { return true; } return false; }, number: function (input) { if (/^[\d]+(\.\d)?$/gi.test(String(input))) { return true; } return false; }, zipcode: function (input) { if (/^[\d]{2}-[\d]{3}$/.test(input)) { return true; } return false; }, phone: function (input) { if (String(input).replace(/[^\d]+/gi, '').length >= 9) { return true; } return false; }, email: function (input) { if (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(input)) { return true; } return false; }, nip: function (input) { var nip_clear = input.replace(/-/g, ""); var reg = /^[0-9]{10}$/; var dig; var control; if (reg.test(nip_clear)) { dig = ("" + nip_clear).split(""); control = (6 * parseInt(dig[0]) + 5 * parseInt(dig[1]) + 7 * parseInt(dig[2]) + 2 * parseInt(dig[3]) + 3 * parseInt(dig[4]) + 4 * parseInt(dig[5]) + 5 * parseInt(dig[6]) + 6 * parseInt(dig[7]) + 7 * parseInt(dig[8])) % 11; if (parseInt(dig[9]) == control) { return true; } } return false; }, regon: function (input) { var reg = /^[0-9]{9}$/; var dig; var kontrola; if(reg.test(input)) { dig = (""+input).split(""); kontrola = (8*parseInt(dig[0]) + 9*parseInt(dig[1]) + 2*parseInt(dig[2]) + 3*parseInt(dig[3]) + 4*parseInt(dig[4]) + 5*parseInt(dig[5]) + 6*parseInt(dig[6]) + 7*parseInt(dig[7]))%11; if(kontrola == 10) { kontrola = 0; }; if (parseInt(dig[8]) == kontrola) { return true; } } return false; }, }; var validate = function () { var func = $(this).data('validate'); var val = $(this).val(); var required = $(this).data('validate-required'); if (required === undefined) { required = 1; } if (functions[func]) { if (functions[func](val, $(this)) || (!required && !val)) { $(this).removeClass('error'); return true; } else { $(this).addClass('error'); return false; } } return true; }; $.fn.validateInputs = function () { var good = true; $(this).find('[data-validate]').each(function () { if (!validate.call($(this))) { good = false; } }); return good; }; $(document).on('change', input_selector, validate); $(form_selector).on('submit', function (evt) { if (!$(this).validateInputs()) { evt.preventDefault(); return false; } }); // $(selector).validateInputs(); });