diff --git a/auto-complete.js b/auto-complete.js index 385cc99..86b95ab 100644 --- a/auto-complete.js +++ b/auto-complete.js @@ -39,7 +39,15 @@ var autoComplete = (function(){ // escape special characters search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi"); - return '
' + item.replace(re, "$1") + '
'; + var option = document.createElement('div'); + + option.id = Math.random().toString(36).substring(7); + option.className = "autocomplete-suggestion"; + option.setAttribute('role', 'option'); + option.setAttribute('data-val', item); + option.innerHTML = item.replace(re, "$1"); + + return option.outerHTML; }, onSelect: function(e, term, item){} }; @@ -49,10 +57,20 @@ var autoComplete = (function(){ var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector); for (var i=0; i'+e.replace(o,"$1")+""},onSelect:function(e,t,o){}};for(var c in e)e.hasOwnProperty(c)&&(l[c]=e[c]);for(var a="object"==typeof l.selector?[l.selector]:document.querySelectorAll(l.selector),u=0;u0?i.sc.scrollTop=n+i.sc.suggestionHeight+s-i.sc.maxHeight:0>n&&(i.sc.scrollTop=n+s)}else i.sc.scrollTop=0},o(window,"resize",i.updateSC),document.body.appendChild(i.sc),n("autocomplete-suggestion","mouseleave",function(e){var t=i.sc.querySelector(".autocomplete-suggestion.selected");t&&setTimeout(function(){t.className=t.className.replace("selected","")},20)},i.sc),n("autocomplete-suggestion","mouseover",function(e){var t=i.sc.querySelector(".autocomplete-suggestion.selected");t&&(t.className=t.className.replace("selected","")),this.className+=" selected"},i.sc),n("autocomplete-suggestion","mousedown",function(e){if(t(this,"autocomplete-suggestion")){var o=this.getAttribute("data-val");i.value=o,l.onSelect(e,o,this),i.sc.style.display="none"}},i.sc),i.blurHandler=function(){try{var e=document.querySelector(".autocomplete-suggestions:hover")}catch(t){var e=0}e?i!==document.activeElement&&setTimeout(function(){i.focus()},20):(i.last_val=i.value,i.sc.style.display="none",setTimeout(function(){i.sc.style.display="none"},350))},o(i,"blur",i.blurHandler);var r=function(e){var t=i.value;if(i.cache[t]=e,e.length&&t.length>=l.minChars){for(var o="",s=0;st||t>40)&&13!=t&&27!=t){var o=i.value;if(o.length>=l.minChars){if(o!=i.last_val){if(i.last_val=o,clearTimeout(i.timer),l.cache){if(o in i.cache)return void r(i.cache[o]);for(var s=1;s$1"),a.outerHTML},onSelect:function(){}};for(var c in e)e.hasOwnProperty(c)&&(n[c]=e[c]);for(var l="object"==typeof n.selector?[n.selector]:document.querySelectorAll(n.selector),i=0;i0?r.sc.scrollTop=o+r.sc.suggestionHeight+a-r.sc.maxHeight:0>o&&(r.sc.scrollTop=o+a)}else r.sc.scrollTop=0},s(window,"resize",r.updateSC),document.body.appendChild(r.sc),o("autocomplete-suggestion","mouseleave",function(){var e=r.sc.querySelector(".autocomplete-suggestion.selected");e&&setTimeout(function(){e.className=e.className.replace("selected",""),r.removeAttribute("aria-activedescendant")},20)},r.sc),o("autocomplete-suggestion","mouseover",function(){var e=r.sc.querySelector(".autocomplete-suggestion.selected");e&&(e.className=e.className.replace("selected","")),r.setAttribute("aria-activedescendant",this.id),this.className+=" selected"},r.sc),o("autocomplete-suggestion","mousedown",function(e){if(t(this,"autocomplete-suggestion")){var s=this.getAttribute("data-val");r.value=s,n.onSelect(e,s,this),r.sc.style.display="none"}},r.sc),r.blurHandler=function(){try{var e=document.querySelector(".autocomplete-suggestions:hover")}catch(t){var e=0}e?r!==document.activeElement&&setTimeout(function(){r.focus()},20):(r.last_val=r.value,r.sc.style.display="none",setTimeout(function(){r.sc.style.display="none"},350))},s(r,"blur",r.blurHandler);var d=function(e){var t=r.value;if(r.cache[t]=e,e.length&&t.length>=n.minChars){for(var s="",a=0;at||t>40)&&13!=t&&27!=t){var s=r.value;if(s.length>=n.minChars){if(s!=r.last_val){if(r.last_val=s,clearTimeout(r.timer),n.cache){if(s in r.cache)return void d(r.cache[s]);for(var a=1;a