Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function () {
- var validate = false;
- var errors = {};
- var methods = {
- isvalid: function (params) {
- var result = [];
- $.each($('input[type=text], input[type=password], select ,textarea', this).filter(':visible'), function (i) {
- $(this).jval();
- result[i] = validate;
- });
- if (result.indexOf(false) == -1) {
- return true;
- } else {
- return false;
- }
- },
- destroy: function (params) {
- // скрывать текст у метки
- if (!params.showText) { $('.info').text(''); }
- // скрывать стиль у поля
- if (!params.showBorder) { $('input[type=text], input[type=password]').removeClass('input-error').removeClass('input-correct'); }
- errors = {};
- validate = false;
- $('.tooltip').remove();
- },
- nulling: function (params) {
- errors[params.type] = [];
- $('.tooltip').remove();
- validate = false;
- }
- };
- var types = {
- Username: function (params) {
- var __this = $(this);
- if (__this.val().length < 5) {
- errors[params.type].push("Длина данного поля не может быть меньше 5 символов!");
- }
- var regExp = new RegExp('^[a-zA-Z]+$');
- if (!regExp.test(__this.val())) {
- errors[params.type].push("Введеное значение не соответствует формату!");
- }
- if (errors[params.type].length == 0) { validate = true; }
- addMark(__this, validate);
- },
- Password: function (params) {
- var __this = $(this);
- if (__this.val().length < 5) {
- errors[params.type].push("Длина данного поля не может быть меньше 5 символов!");
- }
- regExp = new RegExp('^[a-zA-Z0-9$]+$');
- if (!regExp.test(__this.val())) {
- errors[params.type].push("Введенный «Пароль» не соответствует формату и должен состоять только из цифр и латинских символов!");
- }
- if (errors[params.type].length == 0) { validate = true; }
- addMark(__this, validate);
- }
- };
- function deleteMark(element) {
- var mark = $('#markFor__' + element.attr('id'));
- if (mark !== "undefined") {
- mark.remove();
- }
- }
- function addMark(element, validate) {
- // Удаляем предыдущую метку
- deleteMark(element);
- $('body').append('<span id="' + 'markFor__' + element.attr('id') + '" class = "info"></span>');
- var mark = $('#markFor__' + element.attr('id'));
- var pos = element.offset();
- // задаем позицию для метки
- mark.css({ top: pos.top + element.height(), left: pos.left + element.outerWidth() - 25 });
- if (validate) {
- element.removeClass('input-error').addClass('input-correct');
- mark.removeClass('span-error').addClass('span-correct').html('<img src="/Img/icons8-ok.png" />').show();
- } else {
- element.removeClass('input-correct').addClass('input-error');
- mark.removeClass('span-correct').addClass('span-error').html('<a class="errorInfo"><img src="/Img/icons8-help.png" /></a>').show();
- // обработчик по наведению курсора на метку
- $('.errorInfo').on('mouseenter', function (event) {
- event.stopImmediatePropagation();
- $('body').append('<div class = "tooltip">' + errors[element.attr('data-jval')].join("<br />") + '</div>');
- var mpos = mark.offset();
- $('.tooltip').css({
- top: mpos.top,
- left: mpos.left + 40
- });
- $('.tooltip').stop().animate({
- display: "block",
- top: mpos.top - $('.tooltip').outerHeight() / 1.8,
- opacity: .8
- }, {
- queue: false,
- duration: 300
- });
- event.preventDefault();
- });
- // обработчик снятия курсора с метки
- $('.errorInfo').on('mouseleave', function (event) {
- event.stopImmediatePropagation();
- $('.tooltip').remove();
- event.preventDefault();
- });
- }
- }
- $.fn.jval = function (method) {
- var type = this.attr('data-jval');
- if (types[type] && !method) {
- // Обнуляем переменные
- methods.nulling.apply(this, new Array({ type: type }));
- // если запрашиваемый тип существует, мы его вызываем
- // все параметры, кроме имени метода прийдут в метод
- // this так же перекочует в метод
- return types[type].apply(this, new Array({ type: type }));
- } else if (method) {
- // выполняем метод
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else {
- // если ничего не получилось
- $.error('Для типа с именем ' + type + ' не существует правил валидации, либо переданный метод отсутствует.');
- }
- };
- })();
Add Comment
Please, Sign In to add comment