div.sug{ background-color: #FFFFFF; border: 1px solid #cccccc; border-top: 0; } div.sug ul { list-style: none; padding: 0; margin: 0; } div.sug ul li{ height: 28px; line-height: 28px; padding: 0 3px; cursor: default; color: #666666; } div.sug ul li:hover, div.sug ul li.active{ background-color: #19abff; color:#FFFFFF; }
<div style="position: relative"> <label class="label1" for="" style="margin-left: 41px">科室</label><input class="" type="text" id="department" name="" style="width: 160px"/> <div class="sug" id="departmentSug" style="width: 160px;position: absolute;display: none"><!--/*left: 524px;top: 29px;*/--> <ul> <li>词条1</li> <li>词条2</li> <li>词条3</li> <li>词条4</li> <li>词条5</li> </ul> </div> </div>
(function(){ /** * */ var searchDropDown ={ init:function(searchInput,dropDown,searchAjax){ var isOldTargetValueActive = true,oldTargetValue = ""; dropDown.css({"left":searchInput[0].offsetLeft, "top":searchInput[0].offsetTop + searchInput[0].offsetHeight }); searchInput.on("keyup",function(e){ var event = e || window.event, sugDisplay = dropDown.css("display"), sugLi = dropDown.find("li"), liLength = sugLi.length, currentActiveLi = null, i=0; if( (event.keyCode == 40 || event.keyCode == 38) && (sugDisplay=="" || sugDisplay =="block")){ if(event.keyCode == 40){ // 向下键 for(i=0;i<liLength;i++){ if(sugLi.eq(i).hasClass("active")){ isOldTargetValueActive = false; if(i<(liLength-1)){ currentActiveLi = sugLi.eq(i+1); }else{ currentActiveLi = null; } break; }else{ isOldTargetValueActive = true; } } if(isOldTargetValueActive && currentActiveLi == null){ currentActiveLi = sugLi.eq(0); isOldTargetValueActive = false; } }else if(event.keyCode == 38){ //向上键 for(i=0;i<liLength;i++){ if(sugLi.eq(i).hasClass("active")){ isOldTargetValueActive = false; if(i>0){ currentActiveLi = sugLi.eq(i-1); }else{ currentActiveLi = null; } break; }else{ isOldTargetValueActive = true; } } if(isOldTargetValueActive && currentActiveLi == null){ currentActiveLi = sugLi.eq(liLength-1); isOldTargetValueActive = false; } } sugLi.removeClass("active"); if(currentActiveLi){ currentActiveLi.addClass("active"); searchInput.val(currentActiveLi.html()); }else{ searchInput.val(oldTargetValue); } }else if(event.keyCode == 13){ dropDown.css("display","none"); }else{ isOldTargetValueActive = true,oldTargetValue = searchInput.val(); searchAjax(); } if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble = true; } }); searchInput.on("focus",function(e){ if(dropDown.find("li").length){ dropDown.css("display","block"); } }); searchInput.on("click",function(e){ var event = e || window.event; if(dropDown.find("li").length){ dropDown.css("display","block"); } if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble = true; } }); dropDown.on("click",function(e){ var event = e || window.event; var target = event.target || event.srcElement; searchInput.val($(target).html()); }); $(document).on("click",function(e){ dropDown.css("display","none"); }); } }; window.searchDropDown = searchDropDown; })(); searchDropDown.init($("#department"),$("#departmentSug"),searchAjax1); function searchAjax1(){ //todo 请求后台搜索词条 var sugs = [],stringSource = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",len = stringSource.length,html=""; for(var j=0;j<5;j++){ var str=""; for(var i=0;i<10;i++){ var index = Math.floor(Math.random()*len); str += stringSource[index]; } sugs.push(str); } sugs.forEach(function(item){ html += \'<li>\'+item+\'</li>\' }); $("#departmentSug ul").html(html); $("#departmentSug").css("display","block"); }