PageSourceSearch

https://grand-tractor.ru/company/_.pagespeed.jo.B7xgZcWr_i.js

js grand-tractor.ru collected 2026-10-08 11:07:29 UTC 3,669 bytes, 80 lines download raw bytes

1
2    document.addEventListener("DOMContentLoaded", function () {
3        // Находим все поля с type="tel"
4        var phoneInputs = document.querySelectorAll('input[type="tel"]');
5
6        var getInputNumbersValue = function (input) {
7            // Возвращаем только цифры из инпута
8            return input.value.replace(/\D/g, '');
9        }
10
11        var onPhonePaste = function (e) {
12            var input = e.target,
13                inputNumbersValue = getInputNumbersValue(input);
14            var pasted = e.clipboardData || window.clipboardData;
15            if (pasted) {
16                var pastedText = pasted.getData('Text');
17                if (/\D/g.test(pastedText)) {
18                    // Если пытаются вставить буквы, не даем
19                    input.value = inputNumbersValue;
20                    return;
21                }
22            }
23        }
24
25        var onPhoneInput = function (e) {
26            var input = e.target,
27                inputNumbersValue = getInputNumbersValue(input),
28                selectionStart = input.selectionStart,
29                formattedInputValue = "";
30
31            if (!inputNumbersValue) {
32                return input.value = "";
33            }
34
35            if (input.value.length != selectionStart) {
36                // Если редактируем в середине строки, не сдвигаем каретку
37                if (e.data && /\D/g.test(e.data)) {
38                    input.value = inputNumbersValue;
39                }
40                return;
41            }
42
43            // Если номер начинается с российских кодов (7, 8, 9)
44            if (["7", "8", "9"].indexOf(inputNumbersValue[0]) > -1) {
45                if (inputNumbersValue[0] == "9") inputNumbersValue = "7" + inputNumbersValue;
46                var firstSymbols = (inputNumbersValue[0] == "8") ? "8" : "+7";
47                formattedInputValue = input.value = firstSymbols + " ";
48                if (inputNumbersValue.length > 1) {
49                    formattedInputValue += '(' + inputNumbersValue.substring(1, 4);
50                }
51                if (inputNumbersValue.length >= 5) {
52                    formattedInputValue += ') ' + inputNumbersValue.substring(4, 7);
53                }
54                if (inputNumbersValue.length >= 8) {
55                    formattedInputValue += '-' + inputNumbersValue.substring(7, 9);
56                }
57                if (inputNumbersValue.length >= 10) {
58                    formattedInputValue += '-' + inputNumbersValue.substring(9, 11);
59                }
60            } else {
61                // МЕЖДУНАРОДНЫЙ ФОРМАТ: если начинается с другой цифры, просто подставляем + и даем вводить до 15 цифр
62                formattedInputValue = '+' + inputNumbersValue.substring(0, 15);
63            }
64            input.value = formattedInputValue;
65        }
66
67        var onPhoneKeyDown = function (e) {
68            // Очищаем инпут, если остался только плюс или одна цифра при стирании
69            var inputValue = e.target.value.replace(/\D/g, '');
70            if (e.keyCode == 8 && inputValue.length == 1) {
71                e.target.value = "";
72            }
73        }
74
75        for (var phoneInput of phoneInputs) {
76            phoneInput.addEventListener('keydown', onPhoneKeyDown);
77            phoneInput.addEventListener('input', onPhoneInput, false);
78            phoneInput.addEventListener('paste', onPhonePaste, false);
79        }
80    });

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.