PageSourceSearch

https://www.pratik.com.ua/local/templates/main/js/formValidate/validate.js

js pratik.com.ua collected 2026-10-07 19:42:49 UTC 8,760 bytes, 186 lines download raw bytes

1(function ($) {
2  function FormValidation(options) {
3    this.options = $.extend({
4      dataRequired: 'validate',
5      inputWrap: '.input-holder',
6      submitButton: '[type=submit]',
7      event: 'keyup change',
8      errorClass: 'error',
9      correctClass: 'correct',
10      successEvent: function () {
11      }
12    }, options);
13    this.init();
14  }
15
16  FormValidation.prototype = {
17    init: function () {
18      this.findElements();
19      this.events();
20    },
21    findElements: function () {
22      this.form = jQuery(this.options.holder);
23      this.requiredItems = this.form.find('[data-' + this.options.dataRequired + ']');
24      this.submitButton = this.form.find(this.options.submitButton);
25    },
26    events: function () {
27      var self = this;
28      self.requiredItems.on(self.options.event, function () {
29        var item = jQuery(this);
30        var val = item.val();
31        self.validateInputs(item, val);
32      });
33      self.form.on('submit', function () {
34        self.requiredItems.trigger('change'); // need for first load page with not empty form item
35        var result = self.checkValidate();
36        self.form.data('flag', result);
37        if (!result) {
38          return false
39        }
40      });
41    },
42    validateInputs: function (item, value) {
43      switch (item.data(this.options.dataRequired)) {
44        case 'norequired' :
45            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
46            break;
47        case 'required' :
48          if (value === "") {
49            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
50          } else {
51            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
52          }
53          break;
54        case 'required-cfmpas' :
55          var password = $("#password").val();
56          if (value === "") {
57            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
58          } else if (value != password) {
59            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
60          } else if (value !== "" && value === password) {
61            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
62          }
63          break;
64        case 'required-name' :
65          var txtReg = /^[A-Za-z0-9А-ЯЁа-яёҐґІіЇїЄєe ';()-+_=?,.!-/\n/]{2,25}$/;
66          if (!txtReg.test(value)) {
67            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
68          } else {
69            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
70          }
71          break;
72        case 'required-alfa' :
73          var txt = /^[A-Za-z0-9А-ЯёЁїЇіІЄєҐґa-я '\n\s]{3,45}$/;
74          if(!txt.test(value)){
75              item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
76          } else {
77              item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
78          }
79          break;
80        case 'required-email' :
81          var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
82          if (!pattern.test(value)) {
83            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
84          } else {
85            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
86          }
87          break;
88        case 'required-number':
89          var regNumber = /^[+]38 [0-9]{3} [0-9]{3} [0-9]{2} [0-9]{2}$/;
90          if (!regNumber.test(value) || value === "") {
91            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
92          } else {
93            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
94          }
95          break;
96        case 'required-phone':
97          var regNumber = /^[+][0-9]{2}[0-9]{3}[0-9]{3}[0-9]{2}[0-9]{2}$/;
98          if (!regNumber.test(value) || value === "") {
99            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
100          } else {
101            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
102          }
103          break;
104        case 'required-email-phone':
105          var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}|[+]38 [0-9]{3} [0-9]{3} [0-9]{2} [0-9]{2}$/i;
106          if (!pattern.test(value)) {
107            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
108          } else {
109            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
110          }
111          break;
112        case 'required-textarea' :
113            var txtReg = /^[A-Za-z0-9А-ЯёЁїЇіІЄєҐґa-я ':;()-+_=,.!-/\n/]{5,400}$/;
114            if(!txtReg.test(value)){
115                item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
116            } else {
117                item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
118            }
119          break;
120        case 'required-numeric':
121          var regNumeric = /^[0-9]{3,10}$/;
122          if (!regNumeric.test(value) || value === "") {
123            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
124          } else {
125            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
126          }
127          break;
128          case 'required-num-sms':
129          var regNumeric = /^[a-z0-9]{1}$/;
130          if (!regNumeric.test(value) || value === "") {
131            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
132          } else {
133            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
134          }
135          break;
136        case 'required-select':
137          if (value === "") {
138            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
139          } else {
140            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
141
142          }
143          break;
144        case 'required-date':
145          var regDate = /^(0[1-9]|1\d|2\d|3[01])\.(0[1-9]|1[0-2])\.(19|20)\d{2}$/;
146          if (!regDate.test(value) || value === "") {
147            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
148          } else {
149            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
150          }
151          break;
152          case 'required-url':
153          var regDate = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/;
154          if (!regDate.test(value) || value === "") {
155            item.closest(this.options.inputWrap).addClass(this.options.errorClass).removeClass(this.options.correctClass);
156          } else {
157            item.closest(this.options.inputWrap).removeClass(this.options.errorClass).addClass(this.options.correctClass);
158          }
159          break;
160      }
161    },
162    checkValidate: function () {
163      var self = this;
164      if (self.requiredItems.length !== self.form.find('.' + this.options.correctClass).length) {
165        self.requiredItems.each(function () {
166          var item = jQuery(this);
167          var val = item.val();
168          self.validateInputs(item, val);
169        });
170        return false
171      } else {
172        if (typeof self.options.successEvent === 'function') {
173          self.options.successEvent();
174        }
175        return true
176      }
177    }
178  };
179
180  // jquery plugin
181  $.fn.formValidation = function (opt) {
182    return this.each(function () {
183      $(this).data('FormValidation', new FormValidation($.extend(opt, {holder: this})));
184    });
185  };
186})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.