// //alert('Serach js'); search_inp=document.getElementById('main_search_id'); //console.log(search_inp); search_inp.addEventListener('input',function (evt) { handler_search(evt.target.value); // body... },false); var index_search=-1; var list_search_res; var cur_value_search=''; search_inp.addEventListener('keydown',handler_keydown,false); search_inp.addEventListener('input',function(evt){ cur_value_search = this.value; },false); function handler_keydown(evt) { //console.log(evt); switch(evt.key){ case 'ArrowUp': //console.log('Up'); index_search--; //console.log(list_search_res); //console.log(Array.isArray(list_search_res)); if(list_search_res!=undefined){ if(index_search<=-1){ index_search= -1; evt.target.value=cur_value_search; } //console.log(list_search_res.length); select_search_res(evt,index_search); } evt.preventDefault(); //select_search_res('Up'); break; case 'ArrowDown': index_search++; if(list_search_res!=undefined){ if(index_search>list_search_res.length-1){ index_search=list_search_res.length-1; } //console.log(list_search_res.length); select_search_res(evt,index_search); } evt.preventDefault(); //select_search_res('Down'); break; } } function select_search_res(evt,i,that=null) { //console.log(i); for (let obj of list_search_res) { obj.classList.remove('active'); } //console.log(i); //this.value=''; if(i!=-1){ list_search_res[i].classList.add('active'); let txt = list_search_res[i].innerHTML; txt=replace_point(txt); //console.log(evt.target); //evt.target. if(that==null){ evt.target.value = txt; }else{ that.value = txt; } } } function handler_search(value) { //console.log(value); var block = document.getElementById('main_search_result_id'); if (value.length>0) { //console.log(value); var xhr = new XMLHttpRequest(); url= "https://aprelevka.777velo.ru/search/async/"+value+'/'; //console.log(url); xhr.open("GET", url, true); xhr.onreadystatechange = function() {//Вызывает функцию при смене состояния. if(xhr.readyState == XMLHttpRequest.DONE ) { //console.log(xhr.responseText); switch(xhr.status){ case 200: let str=xhr.responseText; block.style.display='block'; block.innerHTML= str; list_search_res= block.querySelectorAll('div'); for(let obj of list_search_res){ obj.addEventListener('click',click_res_search.bind(search_inp),false); } //handler_result(block); //console.log(str); break; case 204: block.innerHTML=''; list_search_res=undefined; //console.log('204 empty'); break; } } } xhr.send(); }else{ block.style.display='none'; } } function click_res_search(evt){ //evt.preventDefault(); var i=0; for(let obj of list_search_res){ if(obj==evt.target){ index_search=i; select_search_res(evt,i,this); } i++; } this.focus(); } function replace_point(str) { let new_str='';//=str; console.log(str); new_str=str.replace(/(.+) • (.*)/,'$1'); return new_str; }