由于 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. Java高并发程序设计学习笔记(八):NIO和AIO

    转自:https://blog.csdn.net/dataiyangu/article/details/87214773 什么是NIOBuffer && ChannelBuffer举个 ...

  2. vue下载后台传过来的乱码流的解决办法

    后台返回的乱码流 解决办法: 请求方式用的是axios,主要加关键的 {responseType: 'blob'} axios封装 export function postDownload(url, ...

  3. Odoo的菜单项

    用户界面的入口是菜单项,菜单项形成一个层级结构,最顶级项为应用,其下一级为每个应用的主菜单.还可以添加更深的子菜单.可操作菜单与窗口操作关联,它告诉客户端在点击了菜单项后应执行什么操作. 菜单项存储在 ...

  4. Docker_云计算技术简述

    Docker官方网站 > https://www.docker.com/Docker博客 > https://www.docker.com/blog/Docker内容库 > http ...

  5. blucesun 解决npm报错:Module build failed: TypeError: this.getResolve is not a function

    1.sass-loader的版本过高导致的编译错误,当前最高版本是8.x,需要退回到7.3.1 运行: npm uninstall sass-loader(卸载当前版本) npm install sa ...

  6. manjaro开机出现grub 解决办法

    # 第一步:输入ls出现(hd0,msods1),(hd0,msdos5),(hd0,msods7)# 不同的电脑不一样,这是我电脑中的磁盘分区,和系统中的表示方法不一样,# linux中一般是/de ...

  7. Jquery实现类似百度的搜索框

    最近工作中需要做一个搜索框,类似百度的搜索框,需要达到两个功能: 1.输入关键字,展示匹配的下拉列表 2.选择匹配的项后查出相关内容 一般电商网站中也经常用到该搜索条,首先分析功能实现,输入关键字马上 ...

  8. LeetCode3.无重复字符的最大子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...

  9. Can you answer these queries I SPOJ - GSS1 (线段树维护区间连续最大值/最大连续子段和)

    You are given a sequence A[1], A[2], ..., A[N] . ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ). A query is defi ...

  10. golang高并发

    golang 为什么能做到高并发 goroutine是go并行的关键,goroutine说到底就是携程,但是他比线程更小,几十个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这 ...