const phoneInput = document.getElementById('phone-input'); phoneInput.addEventListener('input', function () { // Заменяем все символы, НЕ входящие в список [()+0-9-], на пустую строку this.value = this.value.replace(/[^()+0-9\-]/g, ''); }); document.addEventListener('DOMContentLoaded', function() { // Обработка сабмита формы document.getElementById('phone-form').addEventListener('submit', function(event) { event.preventDefault(); const phone = document.getElementById('phone-input').value; checkPhone(phone); }); // Автоматическая проверка, если в URL есть ?num=... const urlParams = new URLSearchParams(window.location.search); const phoneParam = urlParams.get('num'); if (phoneParam && phoneParam.length >= 3 && phoneParam.length <= 11 && /^\d+$/.test(phoneParam)) { document.getElementById('phone-input').value = phoneParam; checkPhone(phoneParam); } }); // Функция отправляет POST-запрос и обрабатывает ответ function checkPhone(phone) { console.log('Проверяем номер:', phone); // Показываем индикатор загрузки, скрываем результат document.getElementById('result').classList.add('hidden'); document.getElementById('progress').classList.remove('hidden'); // Отправляем запрос обычным POST (application/x-www-form-urlencoded) fetch('/ajax_phones.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }, body: 'num=' + encodeURIComponent(phone) }) .then(response => { if (!response.ok) { throw new Error('Network response was not ok ' + response.statusText); } return response.json(); }) .then(data => { // Скрываем «крутилку» document.getElementById('progress').classList.add('hidden'); if (data.length > 0 && data[0].hasOwnProperty('message')) { // Если есть "message", показываем её document.getElementById('result').innerHTML = '

' + data[0].message + '

'; } else { // Иначе выводим список данных let resultHTML = ''; data.forEach(item => { // Блок с информацией по номеру (если поле 'number' есть) if (item.number) { resultHTML += `
Номер
${item.number}

Регион
${item.region}
Оператор
${ item.operator.is_premium ? '' : '' } ${item.operator.name}
ИНН ${item.operator.inn}

Диапазон
${item.range.start}
${item.range.end}
Номеров
${item.count}
`; } // Блок со «ссылкой на нумерацию» (если поле 'link' есть) else if (item.link) { // Показываем только если это не "?num=" и не содержит "null" if (item.link !== '?num=' && !item.link.includes('null')) { // Иконка уменьшена (fa-sm), по центру, с надписью resultHTML += `
Ссылка на найденную нумерацию
`; } } }); document.getElementById('result').innerHTML = resultHTML; } // Показываем блок с результатом document.getElementById('result').classList.remove('hidden'); }) .catch(error => { // Прячем «крутилку» и выводим ошибку document.getElementById('progress').classList.add('hidden'); document.getElementById('result').innerHTML = '

Произошла ошибка при выполнении запроса: ' + error.message + '

'; document.getElementById('result').classList.remove('hidden'); console.error('Ошибка при запросе данных:', error); }); }