下拉框

  1 <!DOCTYPE html>
  2 <html>
  3 
  4     <head>
  5         <meta charset="UTF-8">
  6         <title></title>
  7         <style>
  8             li:hover {
  9                 background: gray;
 10             }
 11             
 12             .gray {
 13                 background: gray;
 14             }
 15         </style>
 16     </head>
 17 
 18     <body>
 19 
 20         <!--
 21 当input获取焦点,
 22 1、弹出建议条目。 OK
 23 2、键盘上下选取   OK
 24 3、回车可以开始搜索 OK 
 25 4、录入你想要的、展示:包含你搜索词的信息几条。 ok
 26 5、热搜词:两个超级链接
 27 获取焦点消失,失去焦点出现,超级链接。
 28 渐变效果..
 29 
 30 -->
 31         美观性:
 32         <form action="a.php">
 33             <input autocomplete="off" type="text" name="str" />
 34             <ul id="mydata">
 35 
 36             </ul>
 37         </form>
 38 
 39         <script>
 40             var myinput = document.querySelector("input")
 41             var mydata = document.querySelector("#mydata")
 42             var data = ['小米6', '小米5', '红米3', '手环', '手铐', '移动电影']
 43             var lis = "";
 44 
 45             function showList() {
 46                 var str = ""
 47                 for(var i = 0; i < data.length; i++) {
 48                     str += "<li>" + data[i] + "</li>";
 49                 }
 50 
 51                 mydata.innerHTML = str;
 52 
 53                 //给li绑定单击事件
 54                 lis = document.querySelectorAll("#mydata li");
 55                 console.log(lis)
 56                 for(var i = 0; i < lis.length; i++) {
 57                     lis[i].onclick = function() {
 58                         myinput.value = this.innerText;
 59                         //myinput.parentNode.submit(); 表单自动提交
 60 
 61                     }
 62                 }
 63 
 64             }
 65 
 66             myinput.onfocus = showList;
 67 
 68             //有能力获取键盘事件?
 69             var k = -1;
 70             myinput.onkeydown = function(ev) {
 71 
 72                 if(ev.keyCode == 40) {
 73                     ++k;
 74 
 75                     k = k >= lis.length - 1 ? lis.length - 1 : k;
 76                     //去掉非当前的背景class.
 77                     (k >= 1) ? (lis[k - 1].className = "") : null
 78                     if(k == 0) {
 79                         lis[lis.length - 1].className = ""
 80                     }
 81                     //给当前li添加背景
 82                     lis[k].className = "gray";
 83                     myinput.value = lis[k].innerText;
 84 
 85                 } else if(ev.keyCode == 38) {
 86                     k = (k <= 0) ? 0 : --k;
 87 
 88                     if(k < (lis.length - 1)) {
 89                         lis[k + 1].className = "";
 90                     }
 91 
 92                     lis[k].className = "gray";
 93                     myinput.value = lis[k].innerText;
 94 
 95                 }
 96 
 97             }
 98 
 99             //获取用户输入显示相关内容
100             myinput.oninput = showList2;
101 
102             function showList2(ev) {
103                 //获取用户输入内容
104                 var inputValue = this.value;
105 
106                 var str = ""
107                 for(var i = 0; i < data.length; i++) {
108                     if(data[i].indexOf(inputValue) > -1) {
109                         str += "<li>" + data[i] + "</li>";
110                     }
111                 }
112                 mydata.innerHTML = str;
113 
114                 //给li绑定单击事件
115                 lis = document.querySelectorAll("#mydata li");
116                 console.log(lis)
117                 for(var i = 0; i < lis.length; i++) {
118                     lis[i].onclick = function() {
119                         myinput.value = this.innerText;
120 
121                     }
122                 }
123 
124             }
125         </script>
126 
127     </body>
128 
129 </html>

posted @ 2017-09-09 22:53  ︶ㄣ鳯躌氷瀚  阅读(148)  评论(0编辑  收藏  举报