PageSourceSearch

https://studyinamerica.ru/local/templates/studyinamerica/new_form/form/js/form.js

js studyinamerica.ru collected 2026-10-08 02:02:28 UTC 10,837 bytes, 289 lines download raw bytes

1$(document).ready( function () {
2
3
4
5    /** показываем форму */
6    $(".js-show-iqevents-form-popup").on("click",function(){
7        /** отправляем в GTM данные по аналитике формы*/
8        if ($('#screen_2').length !== 0) {
9            //console.log('большая форма 1');
10            //dataLayer.push({'event': 'iq_events_big_form_step_1'});
11        }else{
12            //console.log('маленькая форма 1');
13            //dataLayer.push({'event': 'iq_events_simple_form_step_1'});
14        }
15		/**Скрываем плавоющую шапку**/
16		$("#top_line_header").removeClass("fixed");
17		$('.header').removeClass("fixed");
18
19        showPopup_iqc("#iqevents-form-popup");
20        return false;
21    });
22
23    /** прячем форму */
24    $("body").on("click",".iqevents-form-close-popup, .iqevents-close-popup",function(){
25        hidePopup_iqc();
26    });
27
28    /** прячем форму */
29    $("#iqevents-form-overlay").on("click",function(){
30        if($("#iqevents-form-popup.is-show").length){
31            hidePopup_iqc();
32        }
33    });
34
35
36    /** json-ы в которые будем собирать значения полей*/
37    let step_1_fields = {};
38    let step_2_fields = {};
39
40    /** клик по кнопке на 1-м этапе */
41    $('#iqevents-form-content').on('click','.step_1', function (){
42
43        /** сквозные переменные 1-го этапа */
44        let second_screen = false;
45        let button = $(this);
46
47        /** проверяем есть ли второй экран или нет */
48        if (typeof $('#screen_2').html() !== 'undefined') {
49            second_screen = true;
50        }
51
52        /** отправляем в GTM данные по аналитике формы*/
53        if (second_screen) {
54            //console.log('большая форма 2');
55            //dataLayer.push({'event': 'iq_events_big_form_step_2'});
56        }else{
57            //console.log('маленькая форма 2');
58            //dataLayer.push({'event': 'iq_events_simple_form_step_2'});
59        }
60
61        /** удаляем все уведомления об ошибках */
62        $('.input-error').remove();
63        let err = 0;
64
65        /** проверяем заполнение полей в инпутах */
66        $('#screen_1 .field_input').each(function (i){
67            let el= $(this);
68
69            /** исключаем из проверки способ связи */
70            if(el.attr('id')=='field_social'){
71                return false;
72            }
73
74            let input_name = el.find('input').attr('id');
75            step_1_fields[input_name]=el.find('input').val();
76
77            /** если поля обязательные - проверяем на заполненность*/
78            if(el.hasClass('field_required') && step_1_fields[input_name]==''){
79                    let input = el.find('input[type!=hidden]');
80                    input.before('<span class="input-error">'+INPUT_ERROR+'</span>');
81                    err++;
82
83            }
84        });
85
86
87        /** проверяем заполнение полей в выпадающих списках */
88
89        $('#screen_1 .field_select').each(function (i){
90            let el= $(this);
91            let select_name = el.find('select').attr('id');
92
93            /** задаем пустое значение чтобы все элементы были в массиве*/
94            step_1_fields[select_name]='';
95
96            /** собираем выбранные элементы списка */
97            $('#'+select_name+' option:selected').each(function (i){
98                if(i==0){
99                    step_1_fields[select_name]=$(this).val();
100                }else{
101                    step_1_fields[select_name]=step_1_fields[select_name]+' |##| '+$(this).val();
102                }
103
104            });
105
106            /** если поля обязательные - проверяем назаполненность*/
107            if(el.hasClass('field_required') && step_1_fields[select_name]==''){
108                el.find('select').before('<span class="input-error">'+SELECT_ERROR+'</span>');
109                err++;
110            }
111
112
113        });
114
115
116        /** проверяем заполнение полей в textarea */
117        $('#screen_1 .field_textarea').each(function (i){
118            let el= $(this);
119
120            let textarea_name = el.find('textarea').attr('id');
121            step_1_fields[textarea_name]=el.find('textarea').val();
122
123            /** если поля обязательные - проверяем на заполненность*/
124            if(el.hasClass('field_required') && step_1_fields[textarea_name]==''){
125                el.find('textarea').before('<span class="input-error">'+TEXTAREA_ERROR+'</span>');
126                err++;
127            }
128        });
129
130
131
132
133        /** проверяем валидность телефона */
134        if(step_1_fields['field_phone']){
135            if (!isValidPhone_iqc(step_1_fields['field_phone'])) {
136                $('#field_phone').before('<span class="input-error">'+PHONE_ERROR+'</span>');
137                err++;
138            }
139        }
140
141        /** добавляем код страны к телефону */
142        step_1_fields['field_phone']=$('#iqevents-form-popup .iti__selected-dial-code').text()+step_1_fields['field_phone'];
143
144
145        /** проверяем валидность почты */
146        if(step_1_fields['field_email']){
147            if (!isValidEmailAddress_iqc(step_1_fields['field_email'])) {
148                if($('#field_email').siblings('span.input-error').length < 1)
149                    $('#field_email').before('<span class="input-error">'+EMAIL_ERROR+'</span>');
150                err++;
151            }
152        }
153
154
155        /** проверяем выбран ли способ связи */
156        //let sposob_sv='';
157        $('.form_field#field_social input[type=radio]').each(function () {
158            if($(this).is(':checked')){
159                step_1_fields['field_sposob_sv'] = $(this).val();
160                //sposob_sv=$(this).val();
161            }
162        });
163
164
165
166
167        /** если есть хоть 1 ошибка - выходим */
168        if (err>0){
169            return false;
170        }
171
172
173        /** если у нас есть второй экран*/
174        if(second_screen==true){
175
176            /**  перелистываем экран на второй */
177            swipe_screen('.screen_1','.screen_2');
178
179            /** отрабатываем прогресс-бар*/
180            let progressbar = $('#progressbar');
181            animate_progressbar(progressbar,progressbar.attr('max'),5,progressbar.val(),true);
182
183
184            /** отправляем в GTM данные по аналитике формы*/
185            //console.log('большая форма 3');
186            //dataLayer.push({'event': 'iq_events_big_form_step_3'});
187
188
189        }else{
190            /** отправляем данные формы сразу в СРЛ и чистим форму в случае успеха */
191            send_formData(step_1_fields);
192        }
193
194
195    });
196
197
198    /** клик по кнопке на 2-м этапе */
199    $('#iqevents-form-content').on('click','.step_2', function (){
200
201        /** отправляем в GTM данные по аналитике формы*/
202        //console.log('большая форма 4');
203        //dataLayer.push({'event': 'iq_events_big_form_step_4'});
204
205        /** сквозные переменные 2-го этапа */
206        let button = $(this);
207
208        /** удаляем все уведомления об ошибках */
209        $('.input-error').remove();
210
211        let err=0;
212
213        /** проверяем заполнение полей в инпутах */
214        $('#screen_2 .field_input').each(function (i){
215            let el= $(this);
216            let input_name = el.find('input').attr('id');
217
218            step_2_fields[input_name]=el.find('input').val();
219
220            /** если поля обязательные - проверяем на заполненность*/
221            if(el.hasClass('field_required') && step_2_fields[input_name]==''){
222                el.find('input').before('<span class="input-error">'+INPUT_ERROR+'</span>');
223                err++;
224            }
225        });
226
227        /** проверяем заполнение полей в выпадающих списках */
228
229        $('#screen_2 .field_select').each(function (i){
230            let el= $(this);
231            let select_name = el.find('select').attr('id');
232
233            /** задаем пустое значение чтобы все элементы были в массиве*/
234            step_2_fields[select_name]='';
235
236            /** собираем выбранные элементы списка */
237            $('#'+select_name+' option:selected').each(function (i){
238                if(i==0){
239                    step_2_fields[select_name]=$(this).val();
240                }else{
241                    step_2_fields[select_name]=step_2_fields[select_name]+' |##| '+$(this).val();
242                }
243
244            });
245
246            /** если поля обязательные - проверяем назаполненность*/
247            if(el.hasClass('field_required') && step_2_fields[select_name]==''){
248                el.find('select').before('<span class="input-error">'+SELECT_ERROR+'</span>');
249                err++;
250            }
251
252
253        });
254
255
256        /** проверяем заполнение полей в textarea */
257        $('#screen_2 .field_textarea').each(function (i){
258            let el= $(this);
259
260            let textarea_name = el.find('textarea').attr('id');
261            step_2_fields[textarea_name]=el.find('textarea').val();
262
263            /** если поля обязательные - проверяем на заполненность*/
264            if(el.hasClass('field_required') && step_2_fields[textarea_name]==''){
265                el.find('textarea').before('<span class="input-error">'+TEXTAREA_ERROR+'</span>');
266                err++;
267            }
268        });
269
270        /** если есть хоть 1 ошибка - выходим */
271        if (err>0){
272            return false;
273        }
274
275
276
277        /** отправляем данные формы в СРЛ и чистим форму в случае успеха*/
278        send_formData(step_1_fields,step_2_fields);
279
280
281    });
282
283
284    /** при закрытии формы до её автоматической очистки - чистим принудительно*/
285    $('#iqevents-form-content').on('click','.close_temp', function (){
286        clear_form();
287    });
288
289});

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.