1document.addEventListener("DOMContentLoaded", function () { 2 var phoneInputs = document.querySelectorAll('.js-phone'); 3 4 var getInputNumbersValue = function (input) { 5 // Return stripped input value â just numbers 6 return input.value.replace(/\D/g, ''); 7 } 8 9 var onPhonePaste = function (e) { 10 var input = e.target, 11 inputNumbersValue = getInputNumbersValue(input); 12 var pasted = e.clipboardData || window.clipboardData; 13 if (pasted) { 14 var pastedText = pasted.getData('Text'); 15 if (/\D/g.test(pastedText)) { 16 // Attempt to paste non-numeric symbol â remove all non-numeric symbols, 17 // formatting will be in onPhoneInput handler 18 input.value = inputNumbersValue; 19 return; 20 } 21 } 22 } 23 24 var onPhoneInput = function (e) { 25 var input = e.target, 26 inputNumbersValue = getInputNumbersValue(input), 27 selectionStart = input.selectionStart, 28 formattedInputValue = ""; 29 30 if (!inputNumbersValue) { 31 return input.value = ""; 32 } 33 34 if (input.value.length != selectionStart) { 35 // Editing in the middle of input, not last symbol 36 if (e.data && /\D/g.test(e.data)) { 37 // Attempt to input non-numeric symbol 38 input.value = inputNumbersValue; 39 } 40 return; 41 } 42 43 if (["7", "8", "9"].indexOf(inputNumbersValue[0]) > -1) { 44 if (inputNumbersValue[0] == "9") inputNumbersValue = "7" + inputNumbersValue; 45 var firstSymbols = (inputNumbersValue[0] == "8") ? "8" : "+7"; 46 formattedInputValue = input.value = firstSymbols + " "; 47 if (inputNumbersValue.length > 1) { 48 formattedInputValue += '(' + inputNumbersValue.substring(1, 4); 49 } 50 if (inputNumbersValue.length >= 5) { 51 formattedInputValue += ') ' + inputNumbersValue.substring(4, 7); 52 } 53 if (inputNumbersValue.length >= 8) { 54 formattedInputValue += '-' + inputNumbersValue.substring(7, 9); 55 } 56 if (inputNumbersValue.length >= 10) { 57 formattedInputValue += '-' + inputNumbersValue.substring(9, 11); 58 } 59 } else { 60 formattedInputValue = '+' + inputNumbersValue.substring(0, 16); 61 } 62 input.value = formattedInputValue; 63 } 64 var onPhoneKeyDown = function (e) { 65 // Clear input after remove last symbol 66 var inputValue = e.target.value.replace(/\D/g, ''); 67 if (e.keyCode == 8 && inputValue.length == 1) { 68 e.target.value = ""; 69 } 70 } 71 for (var phoneInput of phoneInputs) { 72 phoneInput.addEventListener('keydown', onPhoneKeyDown); 73 phoneInput.addEventListener('input', onPhoneInput, false); 74 phoneInput.addEventListener('paste', onPhonePaste, false); 75 } 76})
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.