ul 加 li 实现 select 下拉选功能
由于 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 下拉选功能的更多相关文章
- 用div,ul,input模拟select下拉框
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- JQuery实现的 checkbox 全选;<select>下拉框功能
1. 全选的checkbox选中时,子checkbox全部选中.反之,全部不选 2.子checkbox中,只要有没有被选中的,取消全选checkbox的选中 3.子checkbox的数量和子check ...
- select下拉选框的默认值,包括每次进入页面的默认值
下拉选: <select onchange="selectTotal(this.value)" style="width: 50px;"> ...
- 【java+selenium3】select 下拉选 (八)
一.select 下拉框 1.下拉选的处理类:Select 如果页面元素是一个下拉框,我们可以将此web元素封装成Select对象. Select select = new Select(WebEle ...
- ul -- li 模拟select下拉框
在写项目中 用到下拉框,一般用 <select name="" id=""> <option value=</option> &l ...
- jquery获取当前select下拉选的属性值
body中: <li> <select id="select_phone"></select> <input type="but ...
- 修改select下拉选的默认选中值
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- DOM操作表单(select下拉选框)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- iview 表单验证 input 用失去焦点事件 blur, select下拉选框 要用change事件 验证
birthday: [{ required: true, message: '内容不能为空', trigger: 'blur' }],belongDept: [{ required: true, me ...
随机推荐
- 1 sql server 中cursor的简介
1.游标的分类 游标共有3类:API服务器游标.Transaction-SQL游标和API客户端游标. 2 API服务器cursor共有如下几种 静态游标的完整结果集将打开游标时建立的结果集存储在临时 ...
- C++typedef struct和struct的区别
#include "pch.h" #include struct struct1 { int a; char b; char* c; }test1;//定义结构体变量 typede ...
- SpringBoot-核心依赖说明
spring-boot-dependencies 一般用来放在父项目中,来声明依赖,子项目引入相关依赖而不需要指定版本号,好处就是解决依赖冲突,统一管理依赖版本号 利用pom的继承,一处声明,处处使用 ...
- Linux服务器开发:工具
预处理 将所有#defined删除,并且展开 处理所有条件预处理指令 处理#include,将被包含的文件插入到该预编译指令的位置 过滤所有的//./**/ 保留所有#pragma编译指令 编译 词法 ...
- 生产者消费者问题--lock
# 代码: public class App { public static void main(String[] args) { Depot depot = new Depot(100); Prod ...
- 洛谷 P2939 [USACO09FEB]改造路Revamping Trails
题意翻译 约翰一共有N)个牧场.由M条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场1出发到牧场N去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰打算升级其中K条小径,使之成为高 ...
- PAT乙级1024
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168 题解 第一遍也是没有全部AC,有3 ...
- Codeforces Round #446 Div1 E
题目大意 有n个数,进行k轮操作:随机一个i,让\(a_i\)减1,然后ans加上\(\Pi_{j\neq i}a_i\). 求ans的期望. 分析 发现,造成的伤害就是原来的ai的积减去k轮操作后的 ...
- 开源的任务系统 TaskManager
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- 【Java Web】简易商品信息管理系统——首个Web项目
正文之前 在学习了一段时间的Java Web的内容之后,当然需要有个项目来练练手,我相信大多数人的首选项目都是信息管理系统吧,所以我选择了商品信息管理系统 目前项目源码已全部上传至GitHub,欢迎大 ...