select2Lazyload.js 1.3 KB

12345678
  1. (function(){$.fn.select2.amd.require(['select2/data/array','select2/utils'],function(ArrayData,Utils){function CustomData($element,options){CustomData.__super__.constructor.call(this,$element,options);}
  2. function contains(str1,str2){return new RegExp(str2,"i").test(str1);}
  3. Utils.Extend(CustomData,ArrayData);CustomData.prototype.query=function(params,callback){if(!("page"in params)){params.page=1;}
  4. let _this=this.$element;let pageSize=20;let term=params.term||"";data=_this.prop('select2-data')
  5. if(!data||term.length>0){var results=this.$element.prop('select2-options-data');if(term.length>0){results=results.filter(function(item){return item.text.toLowerCase().indexOf(term.toLowerCase())>-1;});results=results.sort(function(a,b){let index=a.text.toLowerCase().indexOf(term.toLowerCase())-b.text.toLowerCase().indexOf(term.toLowerCase());return index!==0?index:a.text.length-b.text.length;});}
  6. var i,j,count=1,data=[];for(i=0,j=results.length;i<j;i+=pageSize){data[count]=results.slice(i,i+pageSize);count++;}
  7. if(term.length===0&&results){_this.prop('select2-data',data);_this.prop('select2-result-len',results.length)}}
  8. let len=term.length>0?results.length:_this.prop('select2-result-len');callback({results:data.length===0?[{id:'',text:''}]:data[params.page],pagination:{more:len>params.page*pageSize}});};window.CustomData=CustomData;$(undefined).select2({});});})();