由于 select 没有选中事件(onchange 事件在内容改变时才会触发,选择同一个条目不会触发),只好用其他控件来实现。

<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Select</title>
<style>
.select-container {
position: relative;
} .select-container input {
width: 240px;
height: 24px; margin-top: 15px;
line-height: 24px; text-indent: 5px;
} .select-container span {
/* 定位至 input 尾部 */
position: absolute;
top: 20px;
left: 220px; /* 屏蔽点击事件 */
pointer-events: none;
} .select-container ul {
/* 定位至 input 下面 */
position: absolute;
top: 28px;
left: 0px; padding: 0; /* 显示在 input 上面 */
z-index: 1; width: 242px; /* 默认隐藏 */
display: none;
list-style: none; /* 边框 */
border: 1px solid #007ACC;
} .select-container li a {
/* 使背景色占满一行 */
display: inline-block;
width: 100%; color: #000000;
text-indent: 5px; /* 默认背景色 */
background: #fff; /* 去掉下划线 */
text-decoration: none;
} .select-container li a:hover {
color: #fff;
background: #1F92E4;
}
</style>
</head>
<body>
<div class="select-container">
<span>▼</span>
<input type="text" readonly="readonly" onfocus="this.nextSibling.nextSibling.style.display='block';"
onblur="var t=this;setTimeout(()=>{t.nextSibling.nextSibling.style.display='none';},150);" />
<ul>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="http://www.baidu.com" target="_blank">测试1</a>
</li>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="javascript:;">测试2</a>
</li>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="javascript:;">测试3</a>
</li>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="javascript:;">测试4</a>
</li>
</ul>
</div> <div class="select-container">
<span>▼</span>
<input type="text" readonly="readonly" onfocus="this.nextSibling.nextSibling.style.display='block';"
onblur="var t=this;setTimeout(()=>{t.nextSibling.nextSibling.style.display='none';},150);" />
<ul>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="http://www.baidu.com" target="_blank">测试1</a>
</li>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="javascript:;">测试2</a>
</li>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="javascript:;">测试3</a>
</li>
<li onclick="this.parentNode.previousSibling.previousSibling.value=this.innerText;">
<a href="javascript:;">测试4</a>
</li>
</ul>
</div>
</body>
<script>
window.onload = function () {
var list = document.getElementsByClassName('select-container');
for (var i = 0; i < list.length; i++) {
list[i].children[1].value = list[i].children[2].children[0].innerText.trim();
}
}
</script>
</html>

效果

http://www.w3school.com.cn/tiy/t.asp


https://www.cnblogs.com/ooo0/p/6278102.html

ul 加 li 实现 select 下拉选功能的更多相关文章

  1. 用div,ul,input模拟select下拉框

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. JQuery实现的 checkbox 全选;<select>下拉框功能

    1. 全选的checkbox选中时,子checkbox全部选中.反之,全部不选 2.子checkbox中,只要有没有被选中的,取消全选checkbox的选中 3.子checkbox的数量和子check ...

  3. select下拉选框的默认值,包括每次进入页面的默认值

    下拉选: <select onchange="selectTotal(this.value)" style="width: 50px;">      ...

  4. 【java+selenium3】select 下拉选 (八)

    一.select 下拉框 1.下拉选的处理类:Select 如果页面元素是一个下拉框,我们可以将此web元素封装成Select对象. Select select = new Select(WebEle ...

  5. ul -- li 模拟select下拉框

    在写项目中 用到下拉框,一般用 <select name="" id=""> <option value=</option> &l ...

  6. jquery获取当前select下拉选的属性值

    body中: <li> <select id="select_phone"></select> <input type="but ...

  7. 修改select下拉选的默认选中值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  8. DOM操作表单(select下拉选框)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  9. iview 表单验证 input 用失去焦点事件 blur, select下拉选框 要用change事件 验证

    birthday: [{ required: true, message: '内容不能为空', trigger: 'blur' }],belongDept: [{ required: true, me ...

随机推荐

  1. 配置lnmp时出现“file not found?

    问题: 昨天测试并搭建lnmp架构,在测试过程中,挂载好测试环境时在浏览器上测试网站出现“file not found",使用命令curl时也出现”file not found", ...

  2. jmeter 压力测试tcp

    cmd下管理员执行 jmeter 界面 英文版 中文切换以后不能执行 最多跑905个线程 线程限制 查看结果数 界面会跑死 windows环境 注意:测试1万的tcp并发连接  大爷的 window最 ...

  3. java中创建List<>类型的数组-20171028

    遇到了一个问题需要创建List类型的数组,但是在网上查了很多资料,好像发现并不能创建泛型的数组,于是改用Hashmap实现同等的功能. 代码如下: Map<String,List<AddL ...

  4. 安装tensorflow遇到:Your CPU supports instructions that this TensorFlow binary was not compiled to use

    为了提升CPU计算速度的.若你有支持cuda的GPU,则可以忽略这个问题,因为安装SSE4.1, SSE4.2, AVX, AVX2, FMA, 仅仅提升CPU的运算速度(大概有3倍). 解决方法: ...

  5. 锁&lock与latch

    锁是数据库系统区别于文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.Innodb不仅仅使用行锁,也会在数据库内部其它地方使用锁,从而允许对多种不同资源提供并发访问.如:操作缓冲池中的LRU ...

  6. target runtime com.genuitec.runtime.genuitec.jee60 is not defined

    选中项目,右键 -> Properties -> Project Facets -> 在Runtimes 里 选择用Tomcat运行,然后 Apply -> OK. 问题解决.

  7. 解决laydate动态设置初始值的问题

    //初始化//注意:我这里是时间范围选择,所以定义了range属性.var timeScope = laydate.render({ elem: '#time_scope', range: '~', ...

  8. jquery实现在光标位置(input、textarea)插入内容的方法

    通过扫码枪扫码.按钮点击事件在光标处插入文本,这是前台js常用的功能.但是在input输入框和textarea文本框定位光标,插入数据是有点不同的 首先最简单的,适用于input输入框的方法 HTML ...

  9. h5 rem计算

    设置html默认font-size: 100px,此时默认的页面的width是750px,然后根据手机大小改变html节点的font-size,从而改变rem的大小,代码如下: <script& ...

  10. 归并排序java代码

    //归并排序 通过测试 public class MergeSortTest{ public static void mergeSort(int[] data,int low,int high){ i ...