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.