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

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 12:03:31
字體:
來源:轉載
供稿:網友

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

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

      具體的實現代碼如下:

HTML

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="description" content="" /><meta name="keywords" content="" /><meta name="robots" content="index, follow" /><meta name="googlebot" content="index, follow" /><meta name="author" content="codetker" />  <title> 表單選中彈出框</title><link href="css/reset.css" type="text/css" rel="Stylesheet" /> <link href="css/master.css" type="text/css" rel="Stylesheet" /> <script type="text/javascript" src="js/jquery-1.11.0.js"></script></head><body>  <div class="wrap">    <form class="center">      <div class="input_wrap">        <input name="input1" class="input input1" type="text"/>        <ul class="input1_ul select_list">          <li>問題1</li>          <li>問題2</li>          <li>問題3</li>          <li>問題4</li>          <li>問題5</li>        </ul>      </div>    </form>  </div><script type="text/javascript" src="js/jquery.codetker.datalist.js"></script><script type="text/javascript">$(document).ready(function(){  $(".input_wrap").myDatalist({"bgcolor":"red","widths":1,"heights":1}); });</script></body></html>

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

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

JavaScript

/*  datalist 0.1   自定義datalist插件,實現html5中input元素datalist的效果  兼容IE8+,Firefox,Chrome等常見瀏覽器*/;(function($,window,document,undefined){ //undefinde是真實的undefined,并非參數  //將可選擇的變量傳遞給方法  //定義構造函數  var Datalist=function(ele,opt){    this.$element=ele;    this.defaults={      'bgcolor':'green',      'widths':1,      'heights':1    },    this.options=$.extend({}, this.defaults, opt);  }  //定義方法  Datalist.prototype={    showList:function(){      var color=this.options.bgcolor;      var width=this.options.widths;      var height=this.options.heights; //屬性值      var obj=this.$element; //obj為最外層包裹的div之類的元素,應該擁有positive:relative屬性,方便datalist定位。      var input=$(obj).children().eq(0); //input元素      var inputUl=$(obj).children().eq(1); //datalist元素      //設置彈出datalist的大小和樣式      $(inputUl).css({        "top":$(input).outerHeight()+"px",        "width":$(input).outerWidth()*width+"px"      });      $(inputUl).children().css({        "width":$(input).outerWidth()*width+"px",        "height":$(input).outerHeight()*height+"px"      });      $(inputUl).children('li').mouseover(function() {        $(this).css("background-color",color);        $(this).siblings().css("background-color","#fff");      });      $(inputUl).children('li').mouseout(function() {        $(this).css("background-color","#fff");      });      //再次focus變為空,也可以改為某個默認值      //datalist的顯示和隱藏      $(input).focus(function() {        if($(this).val()!=""){          $(this).val("");        }        $(inputUl).slideDown(500);        var n=-1; //記錄位置,-1表示未選中。當n=-1時直接按enter瀏覽器默認為倒數第一個        $(document).keydown(function(event) {          /* 點擊鍵盤上下鍵,datalist變化 */          stopDefaultAndBubble(event);          if(event.keyCode==38){//向上按鈕            if(n==0||n==-1){              n=4;            }else{              n--;            }            $(inputUl).children('li').eq(n).siblings().mouseout();            $(inputUl).children('li').eq(n).mouseover();          }else if(event.keyCode==40){//向上按鈕            if(n==4){              n=0;            }else{              n++;            }            $(inputUl).children('li').eq(n).siblings().mouseout();            $(inputUl).children('li').eq(n).mouseover();          }else if(event.keyCode==13){//enter鍵            $(inputUl).children('li').eq(n).mouseout();            $(input).val( $(inputUl).children('li').eq(n).text() );            n=-1;          }        });        //去掉瀏覽器默認        function stopDefaultAndBubble(e){          e=e||window.event;          //阻止默認行為          if (e.preventDefault) {            e.preventDefault();          }          e.returnValue=false;          //阻止冒泡          if (e.stopPropagation) {            e.stopPropagation();          }          e.cancelBubble=true;        }      });      $(input).blur(function() {        $(inputUl).slideUp(500);      });      $(inputUl).delegate('li', 'click', function() {          $(input).val( $(this).text() );      });      return this;    }  }  //在插件中使用Datalist對象  $.fn.myDatalist=function(options){    //創建實體    var datalist=new Datalist(this,options);    //調用其方法    return datalist.showList();  } })(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
在线午夜精品自拍| 日韩av免费在线播放| 久久精品视频va| 国产亚洲精品va在线观看| 欧美成人精品在线播放| 亚洲精品国产免费| 国产一区二区三区在线免费观看| 欧亚精品在线观看| 国产精品老女人视频| 国产精品嫩草影院久久久| 亚洲第一中文字幕| 91免费在线视频网站| 国语自产精品视频在线看抢先版图片| 国产精品久久久久久av| 国产91精品视频在线观看| 亚洲乱码一区av黑人高潮| 亚洲精品自在久久| 亚洲xxxx在线| 亚洲视频在线视频| 国产亚洲欧美日韩一区二区| 亚洲欧美日韩精品| 亚洲欧洲国产一区| 日韩av在线不卡| 久久青草福利网站| 国产精品成久久久久三级| 一本色道久久88亚洲综合88| 富二代精品短视频| 日韩小视频在线| 国产手机视频精品| 国产精品嫩草视频| 26uuu久久噜噜噜噜| 久久精品久久久久久国产 免费| 一本色道久久88综合亚洲精品ⅰ| 精品中文字幕久久久久久| 欧美日韩一区二区精品| 懂色av影视一区二区三区| 亚洲精品日韩激情在线电影| 美女黄色丝袜一区| 亚洲人精选亚洲人成在线| 亚洲国产天堂网精品网站| 欧美在线视频在线播放完整版免费观看| 久久综合伊人77777| 亚洲免费中文字幕| 欧美精品日韩www.p站| 国产成人免费av| 亚洲视频电影图片偷拍一区| 色999日韩欧美国产| 欧美视频专区一二在线观看| 欧美日韩国产区| 少妇精69xxtheporn| 色偷偷av一区二区三区| 欧美亚州一区二区三区| 国产精品第三页| 91中文字幕一区| 国产精品免费网站| 日韩视频在线免费观看| 91欧美视频网站| 欧美影院久久久| 狠狠久久五月精品中文字幕| 日韩一二三在线视频播| 欧美性猛交xxxx黑人猛交| 欧美福利视频网站| 日韩高清欧美高清| 国产ts一区二区| 久久久精品国产一区二区| 黄色一区二区在线| 色婷婷综合久久久久中文字幕1| 亚洲精品日韩久久久| 欧美日韩国产色| 色悠悠久久88| 日本一区二区三区在线播放| 欧美日韩999| 欧美日在线观看| 成人激情电影一区二区| 欧美一区二区三区精品电影| 91精品国产91久久久久久久久| 一区二区三区精品99久久| 精品呦交小u女在线| 成人福利网站在线观看11| 91免费视频网站| 在线精品播放av| 中文字幕成人在线| 欧美疯狂xxxx大交乱88av| 亚洲视频欧洲视频| 成人精品aaaa网站| 亚洲欧美另类中文字幕| 日韩av中文在线| 日韩av在线免费看| 成人av在线天堂| 国产精品xxx视频| 91久久久久久久久久| 海角国产乱辈乱精品视频| 亚洲精品美女在线观看播放| 一个人看的www久久| 久国内精品在线| 亚洲影视九九影院在线观看| 国产精品欧美激情在线播放| 黑人极品videos精品欧美裸| 日韩在线观看免费高清| 57pao成人永久免费视频| 热久久免费视频精品| 亚洲女人被黑人巨大进入al| 91久久精品一区| 国产精品一区二区性色av| 久久久久久久久国产| 韩国三级电影久久久久久| 欧美wwwwww| 亚洲色图激情小说| 91久久国产综合久久91精品网站| 国产精品久久久久免费a∨大胸| 九九九久久国产免费| 久久成人18免费网站| 亚洲成人精品久久久| 日韩美女av在线免费观看| 777国产偷窥盗摄精品视频| 色小说视频一区| 国产精品久久久久久久9999| 97色在线播放视频| 91九色单男在线观看| 久久躁日日躁aaaaxxxx| 国产91av在线| 亚洲欧美在线免费观看| 国产视频精品一区二区三区| 国内精品久久久久伊人av| 国产成人拍精品视频午夜网站| 亚洲福利视频久久| 欧美黑人巨大xxx极品| 久久伊人色综合| 欧美风情在线观看| 2019日本中文字幕| 美女扒开尿口让男人操亚洲视频网站| 亚洲第一二三四五区| 欧美成人精品xxx| 国产精品高潮视频| 在线精品视频视频中文字幕| 精品成人国产在线观看男人呻吟| 日韩欧美一区视频| 色综合91久久精品中文字幕| 国产视频精品久久久| 亚洲最大福利网站| 91chinesevideo永久地址| 亚洲热线99精品视频| 国产精品视频区1| 国产精品国产三级国产专播精品人| 国产a∨精品一区二区三区不卡| 成人免费直播live| 精品亚洲夜色av98在线观看| 国产亚洲精品久久| 欧美电影在线观看高清| 久久天天躁狠狠躁老女人| 国产精品专区h在线观看| 亚洲一级黄色片| 日韩精品视频在线播放| 日韩电影免费在线观看| 庆余年2免费日韩剧观看大牛| 亚洲人成在线观看网站高清| 国内精品模特av私拍在线观看| 久久久久亚洲精品成人网小说| 欧美极品少妇与黑人| 久久精品亚洲一区| 在线播放日韩专区| 国产精品久久久av| 国产成人精品av在线| 国产九九精品视频|