jQuery(function(){ function build_ac_list() { //Пример списка городов для автокомплита var regionsListSample = [ {"id": 9990, "label": "Россия", "value": "Россия" }, {"id": 9991, "label": "Москва", "value": "Москва" }, {"id": 9992, "label": "Владивосток", "value": "Владивосток" }, {"id": 9993, "label": "Краснодар", "value": "Краснодар" }, {"id": 9994, "label": "Санкт-Петербург", "value": "Санкт-Петербург" } ]; //Построение списка автокомплита из списка регионовв поп-ап окне var regionsList=[]; var i=0; $('.places-list').find('li').each( function() { i++; if ($(this).find('a').text().length>0) { regionsList.push({"id": 9990+i, "label": $(this).find('>a').text(), value: $(this).text() }); } else { regionsList.push({"id": 9990+i, "label": $(this).find('>label').text(), value: $(this).text() }); } } ); return regionsList; } function attach_ac_list() { var ac_target=$('.c-select-box.places .csb-title input'); var ac_holder=ac_target.parent(); ac_target.parent().append(''); var ac_list=build_ac_list(); ac_target.bind( "keydown", function( event ) { if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( "ui-autocomplete" ).menu.active ) { event.preventDefault(); } }) .autocomplete({ appendTo: ac_holder, minLength: 1, source: function (request, response) { var term = $.ui.autocomplete.escapeRegex(request.term) , startsWithMatcher = new RegExp("^" + term, "i") , startsWith = $.grep(ac_list, function(value) { return startsWithMatcher.test(value.label || value.value || value); }) , containsMatcher = new RegExp(term, "i") , contains = $.grep(ac_list, function (value) { return $.inArray(value, startsWith) < 0 && containsMatcher.test(value.label || value.value || value); }); response(startsWith.concat(contains)); }, focus: function() { return false; }, select: function( event, ui){ var item_to_select=ui.item.label; $('#reg_ac_hidden').val(ui.item.id); $('li label:contains("'+item_to_select+'")').each( function() { if ($(this).hasClass('active')) { $('#ac_animes').css({'opacity':0,'display':'block'}).animate({opacity:1}, 500, function() { setTimeout(function() { $('#ac_animes').stop().animate({opacity:0}, 500, function() { $('#ac_animes').css({'display':'none'}) }); }, 1000); }); } else { } $(this).not('.active').trigger('click'); } ); $('.places-list ul li a').each( function() { if ($(this).text().indexOf(item_to_select)!=-1) { $(this).parent().find('ul li label').each( function() { $(this).not('.active').trigger("click"); } ); } } ); $(this).val(''); return false; } }); } function init_regions() { attach_ac_list(); } init_regions(); $('.q-sel ul li a').click(function() { if ($('.places-list').find('label:not(".active"):contains("'+$(this).text()+'")').length>0) { $('.places-list').find('label:not(".active"):contains("'+$(this).text()+'")').trigger('click'); } else { $('#ac_animes').css({'opacity':0,'display':'block'}).animate({opacity:1}, 500, function() { setTimeout(function() { $('#ac_animes').stop().animate({opacity:0}, 500, function() { $('#ac_animes').css({'display':'none'}) }); }, 1000); }); } return false; }); });