-
Notifications
You must be signed in to change notification settings - Fork 0
/
autocomplete.min.js
1 lines (1 loc) · 1.86 KB
/
autocomplete.min.js
1
$(document).ready(function(){$("<div />").appendTo("body").attr("id","autocompletesuggestions"),$("head").append("<style>.autoselected{background-color:#3390FF;color:#fff} #autocompletesuggestions{background-color:white;position:absolute;z-index:10} #autocompletesuggestions div{padding:5px;cursor:pointer;border-bottom:1px solid rgba(240,240,240,1);}</style>")}),jQuery.fn.autocomplete=function(e){var t=$(this),o=e.array,s=void 0==e.autofill||e.autofill,a=e.url;!o&&a&&$.ajax({url:a,type:"get",data:"",success:function(e){o=JSON.parse(e+"")}}),t.attr("autocomplete","off"),t.on("focusin",function(){var e=t.position(),o=t.outerWidth(),s=t.outerHeight();$("#autocompletesuggestions").css({width:o+"px",height:"auto",top:e.top+s+"px",left:e.left+"px"})}).on("keyup",function(e){this.completeArray=jQuery.grep(o,function(e){return e.toLowerCase().includes(t.val().toLowerCase())});var a,n,i,u="",c=!1,l="";$.each(this.completeArray,function(e,o){u+="<div>"+o+"</div>",c||0==o.toLowerCase().indexOf(t.val().toLowerCase())&&""!=t.val()&&(a=t.val().length,n=o.length,l=o.substring(a,n),c=!0)}),!s||!c||((i=e).keyCode<=46||i.keyCode>=112&&i.keyCode<=123||i.ctrlKey)||(t.val(t.val().concat(l)),$(t).selectRange(a,n)),$("#autocompletesuggestions").html(u).css({border:"1px solid rgba(240,240,240,1)"}),$("#autocompletesuggestions div").hover(function(){$("#autocompletesuggestions div").removeClass("autoselected"),$(this).addClass("autoselected")}),$("#autocompletesuggestions div").on("mousedown",function(){$(t).val($(this).text())}),$("#autocompletesuggestions").show()}).on("focusout",function(){$("#autocompletesuggestions").hide()}),$.fn.selectRange=function(e,t){return this.each(function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(e,t);else if(this.createTextRange){var o=this.createTextRange();o.collapse(!0),o.moveEnd("character",t),o.moveStart("character",e),o.select()}})}};