---
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
```
## 参考链接
## 结束语
- 20190723更新 仿携程等网站鼠标放入`目的地`输入框时的样式
```css
```
- 未完待续...