PageSourceSearch

https://mrybakov.ru/bitrix/templates/.default/components/one_c/simple.component/leave_requst/script.js

js mrybakov.ru collected 2026-10-08 10:24:14 UTC 5,053 bytes, 171 lines download raw bytes

1function initValidation(){
2	var errorClass = 'error';
3	var successClass = 'success';
4	var regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
5	var regPhone = /^[0-9]+$/;
6
7	$('form.validate-form').each(function()
8		{
9			var form = $(this);
10			var successFlag = true;
11			var inputs = form.find('input:text, input:password, textarea, select, input:checkbox');
12			var chk = form.find('.change-box');
13			var chkBlock = chk.parents('.open-close-inner');
14			var innerInputs = chkBlock.find('input:text, input:password, textarea');
15			var erroText = form.find('.error-text').hide();
16
17			// form validation function
18			function validateForm()
19			{
20				successFlag = true;
21
22				inputs.each(checkField);
23				if (successFlag)
24				{
25					sendForm();
26				}
27			}
28			chk.bind('change', function()
29				{
30					if (this.checked === false)
31					{
32						chkBlock.removeClass(errorClass);
33						innerInputs.parent().removeClass(errorClass).removeClass(successClass);
34					}
35			});
36
37			function sendForm()
38			{
39				$('.request_ajax_load').show();
40				var user_name = $('#name').val();
41				var user_phone = $('#phone').val();
42				var user_email = $('#email').val();
43				var user_skype = $('#skype').val();
44				var user_question = $('#question').val();
45				var admin_email = $('#admin_email').val();
46
47				var xhr;
48
49				if (xhr && xhr.readyState != 4)
50				{
51					xhr.abort();
52				}
53				xhr = $.ajax({
54					url: "/dev/ajax/askQuestion.php",
55					type: "POST",
56					data: ({user_name: user_name, user_phone: user_phone, user_question: user_question, user_skype: user_skype, admin_email: admin_email, user_email: user_email}),
57					/*error: function(i){alert('Error');},*/
58					success: function(result, textStatus)
59					{
60						$('.request_ajax_load').hide();
61						form.addClass('completed');
62					}
63				});
64
65				if( itisheaderrequest )
66					ga('send', 'event', 'заявка', 'отправка заявки ', 'mrybakov | кнопка заявки в шапке');
67				else
68					ga('send', 'event', 'заявка', 'отправка заявки ', 'mrybakov | кнопка заявки в теле страницы');
69			}
70			// check field
71			function checkField(i, obj)
72			{
73				var currentObject = $(obj);
74				var currentParent = currentObject.closest('div');
75				if (currentObject.hasClass('inner-required') && chk.is(':checked'))
76				{
77					setState(currentParent, currentObject, !currentObject.val().length || currentObject.val() === currentObject.prop('defaultValue'));
78				}
79				if (currentObject.hasClass('inner-required-number') && chk.is(':checked'))
80				{
81					setState(currentParent, currentObject, !regPhone.test(currentObject.val()));
82				}
83				// not empty fields
84				if (currentObject.hasClass('required'))
85				{
86					setState(currentParent, currentObject, !currentObject.val().length || currentObject.val() === currentObject.prop('defaultValue'));
87				}
88				// correct email fields
89				if (currentObject.hasClass('required-email'))
90				{
91					setState(currentParent, currentObject, !regEmail.test(currentObject.val()) || currentObject.val() === currentObject.prop('defaultValue'));
92				}
93				// correct number fields
94				if (currentObject.hasClass('required-number'))
95				{
96					setState(currentParent, currentObject, !regPhone.test(currentObject.val()));
97				}
98				// something selected
99				if (currentObject.hasClass('required-select'))
100				{
101					setState(currentParent, currentObject, currentObject.get(0).selectedIndex === 0);
102				}
103				if (currentObject.hasClass('change-box'))
104				{
105					setState(currentParent, currentObject, !currentObject.is(':checked'));
106				}
107			}
108
109			// set state
110			function setState(hold, field, error)
111			{
112				hold.removeClass(errorClass).removeClass(successClass);
113				if (error)
114				{
115					hold.parents('.row').addClass('error');
116					hold.addClass(errorClass);
117					field.one('focus',function(){hold.removeClass(errorClass).removeClass(successClass);});
118					successFlag = false;
119				}
120				else
121				{
122					hold.parents('.row').removeClass('error');
123					hold.addClass(successClass);
124				}
125			}
126
127			// form event handlers
128			$('#leave_request_btn').click(validateForm);
129			/* form.submit(validateForm); */
130			return false;
131	});
132}
133
134var itisheaderrequest = false;
135
136$(document).ready(function()
137	{
138		$('#fancybox-close, #additional_close').click(function()
139			{
140				if ($('.validate-form').hasClass('completed'))
141				{
142					/* console.log('Click!'); */
143					$('.form-request .row input, .form-request .row textarea').each(function()
144						{
145							$(this).val('');
146					});
147					$('.form-request .row').each(function()
148						{
149							$(this).removeClass('error');
150					});
151					$('.form-request .error-text').each(function()
152						{
153							$(this).hide();
154					});
155					$('.validate-form').removeClass('completed');
156					$('.block-completed').hide();
157				}
158		});
159
160		$(".btn-request").click(function(){
161			if($(this).parents("#header").length)
162				itisheaderrequest = true;
163			else
164				itisheaderrequest = false;
165		});
166
167});
168
169jQuery(function(){
170	//jQuery("#phone").mask("+7 (999) 999-99-99");
171});

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.