PageSourceSearch

https://avtosalon-sokolniki.ru/assets/js/vendor/justwe.form.js

js avtosalon-sokolniki.ru collected 2026-10-08 16:06:11 UTC 8,242 bytes, 230 lines download raw bytes

1(function($) {
2    $.fn.justweForm = function(options) {
3        var defaultOptions = {
4            // Отправлять ли форму на сервер
5            send: true,
6            // Callback на успешную валидацию
7            isSuccessValidation: function() {}
8        };
9
10        options = $.extend(defaultOptions, options);
11
12        this.submit(function() {
13            $(this).find('*').removeClass('has-error');
14
15            if(window.call_value != undefined) {
16                // id сессии для Calltouch
17                $(this).find('input[name="call_value"]').val(window.call_value);
18            }
19
20            var validate = true;
21            var targetErrors = new Array();
22
23            // Проверяем обязательные поля для заполнения
24            $(this).find('input[justwe-form-required]').each(function() {
25                var value = $(this).val().trim();
26
27                if(value === undefined || value === null || value === '') {
28                    $(this).addClass('has-error');
29
30                    targetErrors.push(this);
31
32                    validate = false;
33                }
34            });
35
36            // чекбоксы
37            $(this).find('input[type="checkbox"][justwe-form-required]').each(function() {
38                var value = $(this).val().trim();
39
40                if( !$(this).is(':checked') ) {
41                	$(this).parents('label').addClass('has-error');
42
43                    targetErrors.push(this);
44
45                    validate = false;
46                }
47            });
48
49            // выпадающие списки
50            $(this).find('select[justwe-form-required]').each(function() {
51                var value = $(this).val();
52
53                if(typeof value === 'string' || value instanceof String) {
54                    value = value.trim();
55                }
56
57                if(value === undefined || value === null || value === '' || value === '0') {
58                    if( $(this).hasClass('select2') ) {
59                        $(this).find('+ span .select2-selection').addClass('has-error');    
60                    } else {
61                        $(this).addClass('has-error');
62                    }
63                    
64                    targetErrors.push(this);
65
66                    validate = false;
67                }
68            });
69
70
71            if( $(this).has('input[name="mail"]').length > 0 ) {
72                var regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
73
74                var email = $(this).find('input[name="mail"]');
75                if( !regExp.test( $(email).val() ) ) {
76                    $(email).addClass('has-error');
77                    $('.error').addClass('has-error');
78
79                    targetErrors.push(this);
80
81                    validate = false;
82                } else {
83                    $('.error').removeClass('has-error');
84                }
85            }
86
87            // Если есть ошибки, то не отправляем форму
88            if(validate === false) {
89                if( targetErrors.length > 0 ) {
90                    // Делаем фокус на элементе с ошибкой
91                    $(targetErrors[targetErrors.length - 1]).focus();
92                }
93
94                return false;
95            } else {
96                if( $(this).is('[justwe-metrica]') ) {
97                    //eval( $(this).attr('justwe-metrica') );
98                }
99
100                // Получение все данных с форм
101                var formData = $(this).serializeArray();
102                var data = {};
103                $(formData).each(function(index, obj) {
104                    data[obj.name] = obj.value;
105                });
106
107                options.isSuccessValidation(data);
108            }   
109
110            // Отправлять ли форму на сервер
111            if( options.send === false ) {
112                event.preventDefault();
113            }
114        });
115           
116
117        // Если в форме есть телефон, то делаем его "умным" и добавляем маску        
118        if( $(this).has('input[name="telephone"]').length > 0 ) {
119            var telephone = $(this).find("input[name='telephone']");
120
121            $(telephone).mask("+7 (999) 999-99-99");
122            $(telephone).keydown(function(event) {
123                if(event.keyCode === 37 || event.keyCode === 39) {
124                    return false;
125                }
126
127                var value = ($(this).val().replace(/[^\d;]/g, '')) + event.key;
128
129                if (value == '70' || value == '71' || value == '72' || value == '75' || value == '76' || value == '77') {
130                    return false;
131                }
132
133                if (value === '789') {
134                    $(this).val('9').trigger('paste');
135
136                    return false;
137                } 
138                if (value === '73') {
139                    $(this).val('').trigger('paste');
140
141                    return false;
142                }      
143                if (value === '78') {
144                    $(this).val('').trigger('paste');
145
146                    return false;
147                }               
148            });   
149
150            // Перемещаем курсор в начало экрана
151            $(telephone).mouseup(function(event) {
152                // Оставляем только цифры и удаляем первый символ
153                var value = $(this).val().replace(/[^\d;]/g, '').slice(1);
154
155                $(this).val(value).trigger('input');
156            });     
157        }
158
159        //Запрет ввода, кроме букв
160        $("input[justwe-form-only-letter]").keypress(function( b ){
161            var C = /[ a-zA-Zа-яА-Я]/;
162            var a = b.which;
163            var c = String.fromCharCode(a);
164            return !!(a==0||a==8||a==9||a==3||c.match(C));
165        });
166
167        //Удаляем символы кроме букв при вставке
168        $("input[justwe-form-only-letter]").bind('keyup blur',function() { 
169            $(this).val($(this).val().replace(/[^ a-zA-Zа-яА-Я]/g,'') ); 
170        });
171    };
172})(jQuery); 
173
174(function () {
175    var onload = window.onload;
176
177    window.onload = function () {
178        if (typeof onload == "function") {
179            onload.apply(this, arguments);
180        }
181
182        var fields = [];
183        var inputs = document.getElementsByTagName("input");
184        var textareas = document.getElementsByTagName("textarea");
185
186        for (var i = 0; i < inputs.length; i++) {
187            fields.push(inputs[i]);
188        }
189
190        for (var i = 0; i < textareas.length; i++) {
191            fields.push(textareas[i]);
192        }
193
194        for (var i = 0; i < fields.length; i++) {
195            var field = fields[i];
196
197            if (typeof field.onpaste != "function" && !!field.getAttribute("onpaste")) {
198                field.onpaste = eval("(function () { " + field.getAttribute("onpaste") + " })");
199            }
200
201            if (typeof field.onpaste == "function") {
202                var oninput = field.oninput;
203
204                field.oninput = function () {
205                    if (typeof oninput == "function") {
206                        oninput.apply(this, arguments);
207                    }
208
209                    if (typeof this.previousValue == "undefined") {
210                        this.previousValue = this.value;
211                    }
212
213                    var pasted = (Math.abs(this.previousValue.length - this.value.length) > 1 && this.value != "");
214
215                    if (pasted && !this.onpaste.apply(this, arguments)) {
216                        this.value = this.previousValue;
217                    }
218
219                    this.previousValue = this.value;
220                };
221
222                if (field.addEventListener) {
223                    field.addEventListener("input", field.oninput, false);
224                } else if (field.attachEvent) {
225                    field.attachEvent("oninput", field.oninput);
226                }
227            }
228        }
229    }
230})();

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.