欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery插件datalist實現(xiàn)很好看的input下拉列表

 更新時間:2015年07月14日 09:55:35   投稿:hebedich  
本文給大家分享的是使用jQuery實現(xiàn)的房HTML5中的一個好看的input框很好看的下拉列表--datalist,兼容性非常不錯,這里推薦給大家,有需要的小伙伴可以參考下。

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

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

      具體的實現(xiàn)代碼如下:

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里面是初始化瀏覽器默認(rèn)值用的,這里是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插件,實現(xiàn)html5中input元素datalist的效果
  兼容IE8+,Firefox,Chrome等常見瀏覽器
*/

;(function($,window,document,undefined){ //undefinde是真實的undefined,并非參數(shù)
  //將可選擇的變量傳遞給方法

  //定義構(gòu)造函數(shù)
  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之類的元素,應(yīng)該擁有positive:relative屬性,方便datalist定位。
      var input=$(obj).children().eq(0); //input元素
      var inputUl=$(obj).children().eq(1); //datalist元素
      //設(shè)置彈出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變?yōu)榭?,也可以改為某個默認(rèn)值
      //datalist的顯示和隱藏
      $(input).focus(function() {
        if($(this).val()!=""){
          $(this).val("");
        }
        $(inputUl).slideDown(500);

        var n=-1; //記錄位置,-1表示未選中。當(dāng)n=-1時直接按enter瀏覽器默認(rèn)為倒數(shù)第一個
        $(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;
          }
        });


        //去掉瀏覽器默認(rèn)
        function stopDefaultAndBubble(e){
          e=e||window.event;
          //阻止默認(rèn)行為
          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){
    //創(chuàng)建實體
    var datalist=new Datalist(this,options);
    //調(diào)用其方法
    return datalist.showList();
  }
 
})(jQuery,window,document);

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

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

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

相關(guān)文章

  • 淺談jquery選擇器 :first與:first-child的區(qū)別

    淺談jquery選擇器 :first與:first-child的區(qū)別

    下面小編就為大家?guī)硪黄獪\談jquery選擇器 :first與:first-child的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • jquery選擇符快速提取web表單數(shù)據(jù)示例

    jquery選擇符快速提取web表單數(shù)據(jù)示例

    遇到要重復(fù)多次同樣的事時,就想找一種省時省力的方法,下面就為大家介紹下利用jquery選擇符快速提取web表單數(shù)據(jù)
    2014-03-03
  • 詳解jQuery插件開發(fā)中的extend方法

    詳解jQuery插件開發(fā)中的extend方法

    這篇文章主要介紹了jQuery插件開發(fā)中的extend方法,有需要的朋友可以參考一下
    2013-11-11
  • jquery 輸入框數(shù)字限制插件

    jquery 輸入框數(shù)字限制插件

    jquery 輸入框數(shù)字限制插件,需要的朋友可以參考下。
    2009-11-11
  • jQuery實現(xiàn)仿Alipay支付寶首頁全屏焦點圖切換特效

    jQuery實現(xiàn)仿Alipay支付寶首頁全屏焦點圖切換特效

    這篇文章主要介紹了jQuery實現(xiàn)仿Alipay支付寶首頁全屏焦點圖切換特效,涉及jQuery插件jquery.kinMaxShow的相關(guān)使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • 幾個比較經(jīng)典常用的jQuery小技巧

    幾個比較經(jīng)典常用的jQuery小技巧

    現(xiàn)在講一下幾個比較經(jīng)典,而且比較常用的 jQuery 技巧,相信你能舉一反三。
    2010-03-03
  • jquery+ajax+text文本框?qū)崿F(xiàn)智能提示完整實例

    jquery+ajax+text文本框?qū)崿F(xiàn)智能提示完整實例

    這篇文章主要介紹了jquery+ajax+text文本框?qū)崿F(xiàn)智能提示的方法,涉及jQuery基于ajax交互實現(xiàn)后臺數(shù)據(jù)的動態(tài)查詢與文本提示信息的顯示功能,需要的朋友可以參考下
    2016-07-07
  • 深入探秘jquery瀑布流的實現(xiàn)

    深入探秘jquery瀑布流的實現(xiàn)

    瀑布流就是像瀑布一樣的網(wǎng)站——豐富的網(wǎng)站內(nèi)容,特別是絢美的圖片會讓你流連忘返。你在瀏覽網(wǎng)站的時候只需要輕輕滑動一下鼠標(biāo)滾輪,一切的美妙的圖片精彩便可呈現(xiàn)在你面前。瀑布流網(wǎng)站是新興的一種網(wǎng)站模式——她的典型代表是pinterest、美麗說、蘑菇街這類型的網(wǎng)站。
    2016-01-01
  • jQuery實現(xiàn)帶滑動條的菜單效果代碼

    jQuery實現(xiàn)帶滑動條的菜單效果代碼

    這篇文章主要介紹了jQuery實現(xiàn)帶滑動條的菜單效果代碼,涉及jquery遍歷頁面元素及動態(tài)變換效果實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • jquery獲取焦點和失去焦點事件代碼

    jquery獲取焦點和失去焦點事件代碼

    鼠標(biāo)在搜索框中點擊的時候里面的文字就消失了,經(jīng)常會用到搜索框的獲得焦點和失去焦點的事件,接下來介紹一下具體代碼,感興趣的朋友額可以參考下
    2013-04-04

最新評論