--- title: 可输入可选择可模糊查询的 select 下拉 date: 2018-12-02 19:00:12 categories: - 经典示例 tags: - html - css - javascript --- # 可输入可选择可模糊查询的 select 下拉 ## 目录 - [简介](#简介) - [CSS 代码](#CSS代码) - [JS 代码](#JS代码) - [HTML 代码](#HTML代码) - [参考链接](#参考链接) - [结束语](#结束语) ## 简介 - 相比网上各种下拉插件,要么出现各种传值问题,要么样式跟现有的项目冲突,此方法没有选用 select 标签,返璞归真 - 啥也不说了,直接上代码。 ## CSS代码 ```css ``` ## JS代码 ```javascript var TempArr = []; var selectDivHtml = ""; // 当鼠标点击输入框时执行此方法 function queryUnCreateAddress(){ TempArr = []; var showFlag = true; $("#selectDivShow").html(selectDivHtml); $.ajax({ //此为向数据库查询json数据填充到下拉框里 type:"post", url:path + "/workplace/workplaceInformationMessage!queryUnCreateAddress.action", dataType:"json", async:false, success:function(data){ TempArr = data; if(null != data && data.length > 0){ $(data).each(function(index,value){ var leng = checkLength(value.workplaceAddress); //计算数据的长度,区分中英文 var height = Math.ceil(leng/21) * 15; //设置下拉框每个选项的高度, if(height == 15){ height = 18; } selectDivHtml +=""+value.workplaceAddress+""; }); }else{ showFlag = false; } }, error:function(){ alert("系统错误"); } }); $("#selectDivShow").append(selectDivHtml); selectDivHtml = ""; if(showFlag){ $("#selectDivShow").attr("style","display:block"); } } // 点击下拉框每个选项时触发此方法 function selectedValueInput(obj){ var code = $(obj).data("code"); var address = $(obj).data("address"); $("#workplaceAddressNum").val(code); //隐藏域,按需添加,方便传值到后台 $("#contractAddress").val(address); $("#selectDivShow").attr("style","display:none"); } // 在输入框输入内容时触发此方法,方便实时监听匹配 function setinput(this_){ var select = $("#selectDivShow"); select.html(""); for(var i = 0;i"+TempArr[i].workplaceAddress+""; } } select.append(selectDivHtml); selectDivHtml = ""; } // 离开输入框时触发此方法 function addressBlur(){ var selectObj = $("#selectDivShow").find("span:hover"); if(null != selectObj && selectObj.length > 0){ //针对鼠标点击下拉框选项触发此方法时的特殊处理 selectedValueInput(selectObj); return; } $("#selectDivShow").attr("style","display:none"); } // 计算输入值的长度 function checkLength(str){ var sLen = 0; for(var i = 0;i
``` ## 参考链接 ## 结束语 - 未完待续...