if (!('eRegistratorLib' in window)) {window['eRegistratorLib'] = {};} window.eRegistratorLib.scrPhoneCodes = { tpl: { code: ` `, }, url: 'https://www.srv4you.ru/api/v1/phone_codes/ajax/ajax.php', init: function(targetId, data, module){ }, getCodes: function(par, callback, callbackError){ let formData = new FormData(); formData.append('action', 'getCodes'); formData.append('code', par['code'].replace(/[^0-9]/gim, '')); this.go(formData, (result) => { if ( ('code' in result) && (result.code == '200') ){ if (callback) {callback(result);} } else { if (callbackError) {callbackError(result);} } }, (error) => { if ( (error) && ('ERRORS' in error) && ('length' in error.ERRORS) && (error.ERRORS.length > 0) ) { showWrapWin.show({ content: '

Ошибка!

', error: '
  • ' + error.ERRORS.join('
  • ') + '
  • ', }, 'middle'); } console.log(error); }); }, verifyCode: function(par, callback, callbackError){ let formData = new FormData(); formData.append('action', 'verifyCode'); formData.append('code', par['code'].replace(/[^0-9]/gim, '')); this.go(formData, (result) => { if ( ('code' in result) && (result.code == '200') ){ if (callback) {callback(result);} } else { if (callbackError) {callbackError(result);} } }, (error) => { if ( (error) && ('ERRORS' in error) && ('length' in error.ERRORS) && (error.ERRORS.length > 0) ) { showWrapWin.show({ content: '

    Ошибка!

    ', error: '
  • ' + error.ERRORS.join('
  • ') + '
  • ', }, 'middle'); } console.log(error); }); }, binding: function(element) { let that = window.eRegistratorLib.scrPhoneCodes; if (!element) return false; if (document.getElementById('list_' + element.id)) return false; element.insertAdjacentHTML('afterend', that.tpl.code .replace(/#id#/gim, element.id) ); let elementList = document.getElementById('list_' + element.id); if (!elementList) return false; element.addEventListener('input', (ev) => { let code = element.value; if ( (code.length > 0) &&(code.replace(/[^0-9]/gim, '') == code) ) { that.getCodes({code: code}, (res) => { console.log(res); if ( (!('result' in res)) ||(res.result.length < 1) ) { elementList.style.display = 'none'; return false; } elementList.style.display = 'block'; elementList.innerHTML = `' ; }); } else { elementList.style.display = 'none'; } }); element.addEventListener('keydown', (ev) => { let key = ev.keyCode; if (elementList) { if (key) { if (key == 38) { let iSelected = elementList.querySelector('li.iselect'); console.log('iSelected = '); console.log(iSelected); if (iSelected) { let prevElement = iSelected.previousElementSibling; if (prevElement && prevElement.tagName == 'LI') { prevElement.classList.add('iselect'); iSelected.classList.remove('iselect'); } } else { let first = elementList.querySelector('li'); if (first) { first.classList.add('iselect'); } } } if (key == 40) { let iSelected = elementList.querySelector('li.iselect'); if (iSelected) { let afterElement = iSelected.nextElementSibling; if (afterElement && afterElement.tagName == 'LI') { afterElement.classList.add('iselect'); iSelected.classList.remove('iselect'); } } else { let first = elementList.querySelector('li'); if (first) { first.classList.add('iselect'); } } } if (key == 13) { let iSelected = elementList.querySelector('li.iselect'); if (iSelected) { iSelected.click(); } } } } }); element.addEventListener('blur', (ev) => { if (elementList) { window.setTimeout(()=>{ elementList.style.display = 'none'; }, 300); } }); }, clickList: function(ev, t) { let that = window.eRegistratorLib.scrPhoneCodes; let element = ev.srcElement; if (element.tagName == 'LI') { let code = element.dataset.code; let forElement = t.dataset.forElement; if (forElement && code) { let forElementDom = document.getElementById(forElement); if (forElementDom) { forElementDom.value = code; let listElementDom = document.getElementById('list_' + forElement); if (listElementDom) { listElementDom.style.display = 'none'; } } } } }, go: async function(formData, callback, callbackError){ let url = this.url; try { const res = await fetch(url, { method: 'POST', body: formData, cache: 'no-cache', } ); const contentType = res.headers.get('content-type'); if (!contentType || !contentType.includes('application/json')) { throw new TypeError("Ошибка JSON!"); } if (!res.ok) { throw new TypeError("Запрос завершился с ошибкой!"); } let data = await res.json(); if ((callback) && (typeof callback == 'function')){ callback(data); } } catch (error) { console.log('Ошибка:' + error); if ((callbackError) && (typeof callbackError == 'function')){ callbackError({ "ERRORS": [error], "STATUS": 400 }); } } }, };