select组件

 1 select.css
 2
 3 *{padding:0;margin:0;}
 4 .box{position: relative;width: 100px;}
 5 ul,li{list-style: none;background: #eee;}
 6 .box span{display:block;width: 100px;height: 30px;line-height:30px;text-align: center; border:1px solid orange;}
 7 .box ul{display: none;position: absolute;left: 0;top:30px;}
 8 .box li{width: 100px;height: 30px;line-height:30px;text-align: center;}
 9 .box li:hover{background: #ccc;}
10 select{display: none;}
11
12 select.js
13
14 (function (){
15     var addLink=false;
16     window.mySeclect=function (select)
17     {
18         if (!addLink)
19         {
20             addLink=true;
21             var oLink=document.createElement(‘link‘);
22             oLink.href=‘mySelect.css‘;
23             oLink.rel=‘stylesheet‘;
24             var oHead=document.getElementsByTagName(‘head‘)[0];
25             oHead.appendChild(oLink);
26         }
27
28         var oBox=document.createElement(‘div‘);
29         oBox.className=‘box‘;
30         oBox.innerHTML=‘<span class="span">‘+select.options[select.selectedIndex].text+‘</span><ul></ul>‘;
31         select.parentNode.insertBefore(oBox,select);
32         var oUl=oBox.getElementsByTagName(‘ul‘)[0];
33
34         for (var i=0; i<select.options.length; i++)
35         {
36             var oLi=document.createElement(‘li‘);
37             oLi.innerHTML=select.options[i].text;
38             oUl.appendChild(oLi);
39         }
40
41
42         var oSpan=oBox.getElementsByClassName(‘span‘)[0];
43
44
45         oSpan.onclick=function (ev){
46             var oEvent=ev || event;
47             oUl.style.display=‘block‘;
48             oEvent.cancelBubble=true;
49         };
50         var aLi=oUl.children;
51         for (var i=0; i<aLi.length; i++)
52         {
53             (function (index){
54                 aLi[i].onclick=function (){
55                     oSpan.innerHTML=this.innerHTML;
56                     select.selectedIndex=index;
57                 };
58             })(i);
59
60         }
61         document.onclick=function (){
62             oUl.style.display=‘none‘;
63         };
64     };
65 })();
66
67
68 select.html
69
70
71 <!DOCTYPE html>
72 <html>
73 <head>
74 <meta charset="utf-8" />
75     <title>agosto</title>
76 </head>
77 <script src="mySelect.js"></script>
78 <script>
79 window.onload=function (){
80     var city=document.getElementById(‘city‘);
81     mySeclect(city);
82 };
83 </script>
84 <body>
85     <form action="test.html">
86         <select id="city" name="city">
87             <option value="bj" data-tit="北京">北京</option>
88             <option value="sh" data-tit="上海">上海</option>
89             <option value="gz" data-tit="广州">广州</option>
90             <option value="hk" data-tit="香港">香港</option>
91             <option value="hz" data-tit="杭州">杭州</option>
92         </select>
93         <input type="submit" value="提交" id="inp" />
94     </form>
95 </body>
96 </html>
时间: 2024-10-25 07:11:48

select组件的相关文章

如何实现select组件的选择输入过滤作用

实现select组件的选择输入过滤作用的js代码如下: /** *其中//******之间的部分显示的是在没有选择输入过滤功能的代码上加入的功能代码 ** / /** * @description This plugin allows you to make a select box editable like a text box while keeping it's select-option features * @description no stylesheets or images

freemarker写select组件(三)

freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=""> <select id="${id}" name="${id}"> <option>---请选择---</option> <#list datas as data> <#if key!="

在使用element ui时 select组件获取label问题

最近在工作的时候需要实现多个条件联合查询,这个其实就是一条sql语句.但是,我们数据库中存储的是根据前端传来id的值所对应的值,而不是直接存的id,使用select组件时,却只能取到value值,无法作为后台查询的条件. 我们需要的是select 组件的label值,而不是看不见的value值. 首先,根据element ui select组件使用手册,给组件添加'change'方法 1 @change=changeValue 再根据Array 的 find方法找出对应的值即可. 1 chang

freemarker写select组件(二)

freemarker写select组件 1.宏定义 <#macro select id datas value=""> <select id="${id}" name="${id}"> <option>---请选择---</option> <#list datas as data> <#if value == data> <option value="${da

freemarker写select组件报错总结(五)

1.错误描述 六月 26, 2014 10:44:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template processing error: "The only legal comparisons are between two numbers, two strings, or two dates.\nLeft hand operand is a freemarker.template.SimpleScalar

freemarker写select组件(四)

freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text="" headKey="" headValue=""> <select id="${id}" name="${id}"> <option>---请选择---</option> &l

freemarker写select组件报错总结(七)

1.错误描述 六月 26, 2014 11:26:27 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template processing error: "Expected collection or sequence. datas evaluated instead to freemarker.core.HashLiteral$SequenceHash on line 7, column 18 in inc/select

freemarker写select组件(五)

freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text="" headKey="" headValue=""> <select id="${id}" name="${id}"> <option>---请选择---</option> &l

freemarker写select组件报错总结(一)

1.具体错误如下 六月 25, 2014 11:26:29 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template processing error: "Expression name is undefined on line 2, column 33 in inc/select.ftl." Expression name is undefined on line 2, column 33 in inc/s

freemarker写select组件(一)

freemarker写select组件 1.宏定义 <#macro select id datas> <select id="${id}" name="${id}"> <option>---请选择---</option> <#list datas as data> <option value="${data}">${data}</option> </#lis