亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

jQuery插件datalist實現很好看的input下拉列表

2024-05-06 16:23:07
字體:
來源:轉載
供稿:網友

本文給大家分享的是使用jQuery實現的房HTML5中的一個好看的input框很好看的下拉列表--datalist,兼容性非常不錯,這里推薦給大家,有需要的小伙伴可以參考下。

HTML5中定義了一種input框很好看的下拉列表--datalist,然而目前它的支持性并不好(萬惡的IE,好在你要漸漸退役了...)。于是最近更據需求寫了一個小型datalist插件,兼容到IE8(IE7應該沒多少人用了吧?)。實現的具體需求如下:

當被選中的時候(觸發blur焦點)(不管是鼠標還是tab鍵)清空input框并且顯示自定義的下拉列表,然后可以用鍵盤的上下鍵選擇(鼠標當然肯定沒理由不可以啦),單擊鼠標左鍵或者enter鍵將選中的列表的值輸入到input框。

具體的實現代碼如下:

HTML

 

 
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <meta name="description" content="" /> 
  6. <meta name="keywords" content="" /> 
  7. <meta name="robots" content="index, follow" /> 
  8. <meta name="googlebot" content="index, follow" /> 
  9. <meta name="author" content="codetker" /> 
  10. <title> 表單選中彈出框</title> 
  11. <link href="css/reset.css" type="text/css" rel="Stylesheet" />  
  12. <link href="css/master.css" type="text/css" rel="Stylesheet" />  
  13.  
  14. <script type="text/javascript" src="js/jquery-1.11.0.js"></script> 
  15. </head> 
  16.  
  17. <body> 
  18. <div class="wrap"
  19. <form class="center"
  20. <div class="input_wrap"
  21. <input name="input1" class="input input1" type="text"/> 
  22. <ul class="input1_ul select_list"
  23. <li>問題1</li> 
  24. <li>問題2</li> 
  25. <li>問題3</li> 
  26. <li>問題4</li> 
  27. <li>問題5</li> 
  28. </ul> 
  29. </div> 
  30. </form> 
  31. </div> 
  32. <script type="text/javascript" src="js/jquery.codetker.datalist.js"></script> 
  33. <script type="text/javascript"
  34. $(document).ready(function(){ 
  35. $(".input_wrap").myDatalist({"bgcolor":"red","widths":1,"heights":1});  
  36. }); 
  37. </script> 
  38. </body> 
  39. </html> 

CSS(reset.css里面是初始化瀏覽器默認值用的,這里是style.css)

 

 
  1. .wrap{ margin:0 auto; font-family: "微軟雅黑";font-size: 14px;} 
  2. .center{ margin: 0 auto; width:500px;} 
  3. .input{ margin: 0; padding: 0; /*border:none;*/ width:140px; height: 24px; float:left;} 
  4. .select_list{display: none; position:absolute; z-index: 100;} 
  5. .select_list li{ height:24px; margin: 0; padding: 0; background-color: #fff; cursor: pointer; list-style: none; position:relative;} 
  6. .select_list li:hover{ background-color: red;} 
  7. .input_wrap{ position:relative; } 

JavaScript

 

 
  1. /* 
  2. datalist 0.1  
  3. 自定義datalist插件,實現html5中input元素datalist的效果 
  4. 兼容IE8+,Firefox,Chrome等常見瀏覽器 
  5. */ 
  6.  
  7. ;(function($,window,document,undefined){ //undefinde是真實的undefined,并非參數 
  8. //將可選擇的變量傳遞給方法 
  9.  
  10. //定義構造函數 
  11. var Datalist=function(ele,opt){ 
  12. this.$element=ele; 
  13. this.defaults={ 
  14. 'bgcolor':'green'
  15. 'widths':1, 
  16. 'heights':1 
  17. }, 
  18. this.options=$.extend({}, this.defaults, opt); 
  19. //定義方法 
  20. Datalist.prototype={ 
  21. showList:function(){ 
  22. var color=this.options.bgcolor; 
  23. var width=this.options.widths; 
  24. var height=this.options.heights; //屬性值 
  25.  
  26. var obj=this.$element; //obj為最外層包裹的div之類的元素,應該擁有positive:relative屬性,方便datalist定位。 
  27. var input=$(obj).children().eq(0); //input元素 
  28. var inputUl=$(obj).children().eq(1); //datalist元素 
  29. //設置彈出datalist的大小和樣式 
  30. $(inputUl).css({ 
  31. "top":$(input).outerHeight()+"px"
  32. "width":$(input).outerWidth()*width+"px" 
  33. }); 
  34. $(inputUl).children().css({ 
  35. "width":$(input).outerWidth()*width+"px"
  36. "height":$(input).outerHeight()*height+"px" 
  37. }); 
  38.  
  39. $(inputUl).children('li').mouseover(function() { 
  40. $(this).css("background-color",color); 
  41. $(this).siblings().css("background-color","#fff"); 
  42. }); 
  43. $(inputUl).children('li').mouseout(function() { 
  44. $(this).css("background-color","#fff"); 
  45. }); 
  46. //再次focus變為空,也可以改為某個默認值 
  47. //datalist的顯示和隱藏 
  48. $(input).focus(function() { 
  49. if($(this).val()!=""){ 
  50. $(this).val(""); 
  51. $(inputUl).slideDown(500); 
  52.  
  53. var n=-1; //記錄位置,-1表示未選中。當n=-1時直接按enter瀏覽器默認為倒數第一個 
  54. $(document).keydown(function(event) { 
  55. /* 點擊鍵盤上下鍵,datalist變化 */ 
  56. stopDefaultAndBubble(event); 
  57. if(event.keyCode==38){//向上按鈕 
  58. if(n==0||n==-1){ 
  59. n=4; 
  60. }else
  61. n--; 
  62. $(inputUl).children('li').eq(n).siblings().mouseout(); 
  63. $(inputUl).children('li').eq(n).mouseover(); 
  64. }else if(event.keyCode==40){//向上按鈕 
  65. if(n==4){ 
  66. n=0; 
  67. }else
  68. n++; 
  69. $(inputUl).children('li').eq(n).siblings().mouseout(); 
  70. $(inputUl).children('li').eq(n).mouseover(); 
  71. }else if(event.keyCode==13){//enter鍵 
  72. $(inputUl).children('li').eq(n).mouseout(); 
  73. $(input).val( $(inputUl).children('li').eq(n).text() ); 
  74. n=-1; 
  75. }); 
  76.  
  77.  
  78. //去掉瀏覽器默認 
  79. function stopDefaultAndBubble(e){ 
  80. e=e||window.event; 
  81. //阻止默認行為 
  82. if (e.preventDefault) { 
  83. e.preventDefault(); 
  84. e.returnValue=false
  85.  
  86. //阻止冒泡 
  87. if (e.stopPropagation) { 
  88. e.stopPropagation(); 
  89. e.cancelBubble=true
  90.  
  91. }); 
  92. $(input).blur(function() { 
  93. $(inputUl).slideUp(500); 
  94. }); 
  95. $(inputUl).delegate('li''click'function() { 
  96. $(input).val( $(this).text() ); 
  97. }); 
  98.  
  99. return this
  100. //在插件中使用Datalist對象 
  101. $.fn.myDatalist=function(options){ 
  102. //創建實體 
  103. var datalist=new Datalist(this,options); 
  104. //調用其方法 
  105. return datalist.showList(); 
  106.  
  107. })(jQuery,window,document); 

這里用ul li列表模擬datalist options。實現邏輯非常簡單,稍微需要注意點的是div.input_wrap是用相對定位的,方便ul.input1_ul相對進行定位。由于需求有很多的輸入框且相互之間不影響,因此這里是input1。好歹是我自己開發的第一個插件,mark一記。

需要代碼的可以戳https://github.com/codetker/myDatalist。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品日韩久久久| 国产精品99久久久久久久久久久久| 亚洲人成在线播放| 午夜精品久久久久久久男人的天堂| 国产精品高清在线| 国产亚洲精品久久久久动| 亚洲一区二区久久久| 欧美国产日韩一区二区在线观看| 国产精品视频在线播放| 久久综合88中文色鬼| 91国产精品视频在线| 亚洲欧美国产日韩中文字幕| 欧美精品性视频| 2019中文字幕在线观看| 精品视频在线导航| 精品久久久久久久久久久| 国产精品一二三视频| 亚洲自拍偷拍一区| 亚洲在线观看视频网站| 亚洲精品美女在线观看播放| 中文字幕亚洲一区二区三区五十路| 欧美丰满少妇xxxxx做受| 国产极品精品在线观看| 亚洲三级黄色在线观看| 国产亚洲精品一区二区| 国产精品永久免费观看| 国产精品com| 日本一区二区在线播放| 亚洲国产精品女人久久久| 91欧美日韩一区| 亚洲成人精品久久久| 国产欧美 在线欧美| 在线中文字幕日韩| 国产精品视频内| 97视频在线观看网址| 国产精品日韩欧美| 日韩综合视频在线观看| 日产精品99久久久久久| 亚洲成色www8888| 久久综合久久美利坚合众国| 亚洲成人亚洲激情| 欧美日韩亚洲网| 国产女精品视频网站免费| 国模精品一区二区三区色天香| 亚洲国产成人久久综合一区| 日韩av在线免费看| 有码中文亚洲精品| 这里只有精品视频| 法国裸体一区二区| 久久久久久国产精品三级玉女聊斋| 久久久www成人免费精品| 欧美国产精品人人做人人爱| 成人免费观看a| 青青草一区二区| 国内精久久久久久久久久人| 日产精品99久久久久久| 91精品国产亚洲| 国产一区二区三区在线视频| 国产视频999| 日韩中文视频免费在线观看| 欧美日韩电影在线观看| 中文字幕亚洲欧美| 精品国产精品三级精品av网址| 国产精品综合久久久| 国产视频999| 亚洲人成网站免费播放| 日韩精品在线视频| 九九综合九九综合| 在线观看欧美www| 国产日韩欧美在线视频观看| 亚洲二区在线播放视频| 久久精视频免费在线久久完整在线看| 欧美体内谢she精2性欧美| 亚洲国产欧美一区| 国产午夜精品美女视频明星a级| 欧美在线播放视频| 亚洲毛片在线观看.| 日韩网站在线观看| 国产一区二区三区三区在线观看| 色妞色视频一区二区三区四区| 欧美午夜精品久久久久久浪潮| 国产精品自产拍在线观看中文| 亚洲全黄一级网站| 精品国产精品自拍| 91精品久久久久久久久不口人| 国产剧情久久久久久| 国产一区二区三区在线播放免费观看| 性欧美暴力猛交69hd| 日韩电影免费观看中文字幕| 国产日韩在线亚洲字幕中文| 亚洲精品二三区| 色综合91久久精品中文字幕| 中文字幕成人精品久久不卡| 国产亚洲精品久久久优势| 国产成人精品a视频一区www| 欧美美最猛性xxxxxx| 欧美日产国产成人免费图片| 亚洲国产成人精品电影| 久久久久久久久久久网站| 97超碰国产精品女人人人爽| 久久99久久99精品免观看粉嫩| 国产欧美最新羞羞视频在线观看| 国产精品免费看久久久香蕉| 最近2019中文字幕第三页视频| 亚洲自拍偷拍区| 成人精品久久一区二区三区| 国产欧美精品xxxx另类| 91sao在线观看国产| 日韩中文字幕在线看| 日韩欧美国产高清91| 欧美电影在线观看| 中文字幕一区二区精品| 日韩一二三在线视频播| 日韩av网站电影| 国产精品自拍偷拍视频| 国产精品中文在线| 久久男人的天堂| 亚洲视频电影图片偷拍一区| 国产极品精品在线观看| 精品成人国产在线观看男人呻吟| 国产精品丝袜高跟| 一区二区三区视频免费在线观看| 97涩涩爰在线观看亚洲| 日本欧美爱爱爱| 欧美激情在线一区| 精品国产999| 成人动漫网站在线观看| 亚洲美女视频网| 国产91久久婷婷一区二区| 国产主播喷水一区二区| 2019亚洲男人天堂| 成人女保姆的销魂服务| 久久免费精品视频| 亚洲欧美日韩精品| 中文字幕在线亚洲| 亚洲摸下面视频| 96sao精品视频在线观看| 欧美在线免费视频| 亚洲高清av在线| 欧美精品在线观看91| 理论片在线不卡免费观看| 国产aaa精品| 欧美插天视频在线播放| 欧美日韩人人澡狠狠躁视频| 欧美日韩亚洲视频| 亚洲人午夜精品免费| 日本高清不卡在线| 欧美一级成年大片在线观看| 亚洲国产美女精品久久久久∴| 欧美日韩一区二区在线播放| 成人免费视频在线观看超级碰| 亚洲欧美变态国产另类| 亚洲精品狠狠操| 最近2019年手机中文字幕| 91精品国产精品| 奇米成人av国产一区二区三区| 久久国产精品影片| 亚洲精品久久久久中文字幕欢迎你| 成人国产精品久久久| 国产精品jizz在线观看麻豆| 国产精品久久久久久久久久尿| 精品久久久久久久久中文字幕| 国产精品网红直播| 欧美在线观看网站|