jQuery实现select模糊查询(反射机制)
通过如下代码就可以简单实现select带模糊查询的条件查询,具体如下jquery.select.js如下:
(function($){ $.selectSuggest=function(target,data,itemSelectFunction){ vardefaulOption={ suggestMaxHeight:'200px',//弹出框最大高度 itemColor:'#000000',//默认字体颜色 itemBackgroundColor:'RGB(199,237,204)',//默认背景颜色 itemOverColor:'#ffffff',//选中字体颜色 itemOverBackgroundColor:'#C9302C',//选中背景颜色 itemPadding:3,//item间距 fontSize:12,//默认字体大小 alwaysShowALL:true//点击input是否展示所有可选项 }; varmaxFontNumber=0;//最大字数 varcurrentItem; varsuggestContainerId=target+"-suggest"; varsuggestContainerWidth=$('#'+target).innerWidth(); varsuggestContainerLeft=$('#'+target).offset().left; varsuggestContainerTop=$('#'+target).offset().top+$('#'+target).outerHeight(); varshowClickTextFunction=function(){ $('#'+target).val(this.innerText); currentItem=null; $('#'+suggestContainerId).hide(); } varsuggestContainer; if($('#'+suggestContainerId)[0]){ suggestContainer=$('#'+suggestContainerId); suggestContainer.empty(); }else{ suggestContainer=$('<div></div>');//创建一个子<div> } suggestContainer.attr('id',suggestContainerId); suggestContainer.attr('tabindex','0'); suggestContainer.hide(); var_initItems=function(items){ suggestContainer.empty(); varitemHight=0; for(vari=0;i<items.length;i++){ if(items[i].text.length>maxFontNumber){ maxFontNumber=items[i].text.length; } varsuggestItem=$('<div></div>');//创建一个子<div> suggestItem.attr('id',items[i].id); suggestItem.append(items[i].text); suggestItem.css({ 'padding':defaulOption.itemPadding+'px', 'white-space':'nowrap', 'cursor':'pointer', 'background-color':defaulOption.itemBackgroundColor, 'color':defaulOption.itemColor }); suggestItem.bind("mouseover", function(){ $(this).css({ 'background-color':defaulOption.itemOverBackgroundColor, 'color':defaulOption.itemOverColor }); currentItem=$(this); }); suggestItem.bind("mouseout", function(){ $(this).css({ 'background-color':defaulOption.itemBackgroundColor, 'color':defaulOption.itemColor }); currentItem=null; }); suggestItem.bind("click",showClickTextFunction); suggestItem.bind("click",itemSelectFunction); suggestItem.appendTo(suggestContainer); suggestContainer.appendTo(document.body); } } varinputChange=function(){ varinputValue=$('#'+target).val(); inputValue=inputValue.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"); varmatcher=newRegExp(inputValue,"i"); return$.grep(data, function(value){ returnmatcher.test(value.text); }); } $('#'+target).bind("keyup", function(){ _initItems(inputChange()); }); $('#'+target).bind("blur", function(){ if(!$('#'+suggestContainerId).is(":focus")){ $('#'+suggestContainerId).hide(); if(currentItem){ currentItem.trigger("click"); } currentItem=null; return; } }); $('#'+target).bind("click", function(){ if(defaulOption.alwaysShowALL){ _initItems(data); }else{ _initItems(inputChange()); } $('#'+suggestContainerId).removeAttr("style"); vartempWidth=defaulOption.fontSize*maxFontNumber+2*defaulOption.itemPadding+30; varcontainerWidth=Math.max(tempWidth,suggestContainerWidth); varh=this.scrollHeight; $('#'+suggestContainerId).css({ 'border':'1pxsolid#ccc', 'max-height':'100px', 'top':suggestContainerTop, 'left':suggestContainerLeft, 'width':containerWidth, 'position':'absolute', 'font-size':defaulOption.fontSize+'px', 'font-family':'Arial', 'z-index':99999, 'background-color':'#FFFFFF', 'overflow-y':'auto', 'overflow-x':'hidden', 'white-space':'nowrap' }); $('#'+suggestContainerId).show(); }); _initItems(data); $('#'+suggestContainerId).bind("blur", function(){ $('#'+suggestContainerId).hide(); }); } })(jQuery);
html如下:
<!DOCTYPEhtml> <htmllang="zh_cn"> <head> <title>select.suggest</title> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <!--Bootstrap--> <scriptsrc="js/jquery-1.10.2.js"></script> <scriptsrc="js/jquery.select.js"></script> </head> <body> <h1>Hello,world!</h1> <div> <div> <div>.col-md-1 </div> <divstyle=""> <inputid="testInput"type="text"/> </div> </div> </div> <!--jQuery(necessaryforBootstrap'sJavaScriptplugins)--> <!--Includeallcompiledplugins(below),orincludeindividualfilesasneeded--> </body> <scripttype="text/javascript"> vardatas=[{"id":"2","text":"中国石油"}, {"id":"4","text":"中国建筑"}, {"id":"3","text":"中国移动"}, {"id":"5","text":"中国工商银行"}, {"id":"7","text":"中国铁建"}, {"id":"8","text":"上海汽车集团"}, {"id":"9","text":"中国建设银行"}, {"id":"10","text":"联想集团"}]; varitemSelectFuntion=function(){ alert(this.id+","+this.innerHTML); }; $.selectSuggest('testInput',datas,itemSelectFuntion); </script> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。