Files
framework/public/plugins/validator/validator.js
T
2019-03-11 19:44:28 -03:00

177 lines
5.1 KiB
JavaScript
Executable File

// https://stackoverflow.com/a/6871820
// http://learn.jquery.com/plugins/basic-plugin-creation/
(function($) {
var validator_can_submit = true;
var validator_warn = false;
var validator_methods = {
init: function(options) {
$(this).on('submit', function(e) {
validator_can_submit = true;
validator_warn = false;
$(this).find('input, select, textarea').each(function() {
validator_clear($(this));
validator_required($(this));
validator_len($(this));
validator_minlen($(this));
validator_maxlen($(this));
validator_func($(this));
});
if (!validator_can_submit) {
return false;
}
if (validator_warn) {
if (!confirm("Inválido")) {
return false
}
}
});
}
};
$.fn.validator = function(methodOrOptions) {
if (validator_methods[methodOrOptions]) {
return validator_methods[methodOrOptions].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
// Default to "init"
return validator_methods.init.apply(this, arguments);
} else {
console.log("--- Plugin error");
}
};
function validator_clear(element) {
$(element).parent().removeClass('has-success');
$(element).parent().removeClass('has-error');
$(element).parent().removeClass('has-warning');
}
function validator_required(element) {
if (typeof $(element).data('required') === 'undefined') {
return;
}
if ($(element).data('required') === true) {
if ($(element).val() === "") {
$(element).parent().addClass('has-error');
validator_can_submit = false;
}
return;
}
if ($(element).val() === '') {
$(element).parent().addClass('has-warning');
validator_warn = true;
}
}
function validator_minlen(element) {
if (typeof $(element).data('minlen') === 'undefined') {
return;
}
if ($(element).val().length === 0) {
return;
}
if ($(element).val().length < $(element).data('minlen')) {
validator_can_submit = false;
$(element).parent().addClass('has-error');
}
}
function validator_len(element) {
if (typeof $(element).data('len') === 'undefined') {
return;
}
if ($(element).val().length === 0) {
return;
}
if ($(element).val().length !== $(element).data('len')) {
validator_can_submit = false;
$(element).parent().addClass('has-error');
}
}
function validator_maxlen(element) {
if (typeof $(element).data('maxlen') === 'undefined') {
return;
}
if ($(element).val().length === 0) {
return;
}
if ($(element).val().length > $(element).data('maxlen')) {
validator_can_submit = false;
$(element).parent().addClass('has-error');
}
}
function validator_func(element) {
if (typeof $(element).data('func') === 'undefined') {
return;
}
if ($(element).val().length === 0) {
return;
}
if (eval("typeof validate_" + $(element).data('func')) === "function") {
/*
if (! eval("validate_" + $(element).data('func') + "( "+$(element).val()+" )")) {
validator_can_submit = false;
$(element).parent().addClass('has-error');
}*/
}
}
//---------------------
function validate_cpf(value = "") {
value = value.replace(/\./g, '').replace(/-/g, '');
var numeros, digitos, soma, i, resultado, digitos_iguais;
digitos_iguais = 1;
if (value.length < 11) {
return false;
}
for (i = 0; i < value.length - 1; i++) {
if (value.charAt(i) != value.charAt(i + 1)) {
digitos_iguais = 0;
break;
}
}
if (!digitos_iguais) {
numeros = value.substring(0, 9);
digitos = value.substring(9);
soma = 0;
for (i = 10; i > 1; i--) {
soma += numeros.charAt(10 - i) * i;
}
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0)) {
return false;
}
numeros = value.substring(0, 10);
soma = 0;
for (i = 11; i > 1; i--) {
soma += numeros.charAt(11 - i) * i;
}
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1)) {
return false;
}
return true;
} else {
return false;
}
}
})(jQuery);