ホームページ  >  記事  >  ウェブフロントエンド  >  jQueryベースのオートコンプリートプラグイン_jquery

jQueryベースのオートコンプリートプラグイン_jquery

WBOY
WBOYオリジナル
2016-05-16 18:11:041093ブラウズ

以下はhtml测试代:

复制代 代码如下:




オートコンプリート






<入力値="入力" />

<入力値="入力" />

<入力値="入力" />

<入力値="入力" />




下は jQuery 插件:
复制代码 代码如下:

;(function($){
/* プラグイン */
$.fn.autoComplete=function(o){
if(o.ajax) o.ajax=$. extend({ url:'', dataType:'json', async:true }, o.ajax||{});
o.elemCSS=$.extend({ focus:{'color':'#f00 '}、blur:{'color':'#000'} }、o.elemCSS||{});
o=$.extend({
source:null,/* 一致する配列を提供します) */
ajax:{},/* ajax 条件を提供します。ソースが存在する場合、このパラメーターは無効です */
input:'input',/* 入力ボックスのセレクターを提供します */
popup :'ul',/* ポップアップ ボックスのセレクターを提供します。HTML の ul 要素である必要があります */
elemCSS:{}/* ポップアップ ボックス内の項目のフォーカスとぼかしの CSS オブジェクトを提供します */
},o||{});
var handler=(function(){
var handler=function(e,o){ return new handler.prototype.init(e,o); };
handler.prototype={
e:null、o:null、timer:null、show:0、$input:null、$popup:null、
init:function(e,o){
this.e=e;
this.o=o;
this.$input=$(this.o.input,this.e); .popup,this.e);
this.initEvent();
match:function(quickExpr,value,source){
for(ソース内の変数 i){
if( value.length>0 && QuickExpr.exec(source[i])!=null )
this.$popup.append('
  • ' ソース[i] '
  • ');
    }
    if($('li a',this.$popup[0]).length){ this.$popup.show(); }else{ this.$popup.hide(); }
    },
    fetch:function(ajax,search,quickExpr){
    var that=this;
    $.ajax({
    url: ajax.url 検索、
    dataType: ajax.dataType、
    async: ajax.async、
    error: function(data,es,et){アラート('エラー'); },
    成功: function(data){ that.match(quickExpr,search,data) }
    });
    },
    initEvent:function(){
    var that=this;
    this.$input.focus(function(){
    var value=this.value, QuickExpr=RegExp('^' value,'i'), self=this;
    that.timer=setInterval (function(){
    if(value!=self.value){
    value=self.value;
    that.$popup.html('');
    if(value!=' '){
    quickExpr=RegExp('^' value);
    if(that.o.source) that.match(quickExpr,value,that.o.source);
    else if(that. o.ajax) that.fetch(that.o.ajax,value,quickExpr)
    }
    }
    },200); clearInterval(that.timer);
    var current=-1;
    var len=that.$popup.find("li a").length-1; .$popup[0]).click(function(){
    that.$input[0].value=$(this).text();
    that.$popup.html('')。 Hide();
    }).focus(function(){
    current = $(this).parent().index();
    $(this).css(that.o.elemCSS. focus);
    }).blur(function(){
    $(this).css(that.o.elemCSS.blur);
    }); that.$popup[0]).keydown(function(event){
    if(event.keyCode==40){
    current ;
    if(current if(current>len) current=0;
    that.$popup.find("li a").get(current).focus();
    }else if(event.keyCode==38){
    現在--;
    if(現在>len) 現在=0;
    if(currentthat.$popup.find("li a").get(current).focus();
    }
    });
    }).keydown(function(event){
    if(event.keyCode==40){
    that.$popup.blur().find("li a").get(0) .focus();
    }
    });
    $(this.e).hover(function(){ that.show=1; },function(){ that.show=0; });
    $(document).click(function(){ if(that.show==0){ that.$popup.hide(); } });
    }
    };
    handler.prototype.init.prototype=handler.prototype;/* JQuery スタイル */
    return ハンドラー;
    })();
    return this.each(function(){ handler(this,o); });
    };
    /* 呼び出し */
    $(document).ready(function(){
    $(".autoComplete").autoComplete({
    source:[123,1234,43563,12346, 3464564,3454,7567,956,456,9383,893,999]、
    //ajax:{ url:'./php/fetch.php?search='、dataType:'json'、async:false }、
    elemCSS:{ focus:{'color':'#0f0'}、blur:{'color':'#f00'} }
    });
    /* 結論 */
    })(jQuery);


    使用時間有るajax请要求被注释了,它返一jsonデータベース,我用php读データ台库来测试的,如果必要,代码如下:




    复制代码


    代码如下:

    class DataFetch{
    private $conn, $rs;
    function __construct(){
    $this->conn = mysql_connect("localhost","root","pwd") or die("Cant't connect host~");
    mysql_select_db("studentinfo",$this->conn) or die("Cant't select database~");
    }
    public function data_list($s){
    $this->rs=mysql_query("select sno from student where sno like '$s%'") or die("Can't fetch~");
    $dataList=array();
    while($row = mysql_fetch_array($this->rs,MYSQL_ASSOC)){
    array_push($dataList,$row);
    }
    return $dataList;
    }
    }
    $search= isset($argv[1]) ? $argv[1] :
    ( isset($_GET['search']) ? $_GET['search'] : '' ) ;
    $fetch=new DataFetch();
    $data=$fetch->data_list($search);
    echo '[';
    foreach ($data as $key=>$value){
    echo "nt";
    echo '"'.$value['sno'].'"';
    if( $key!=count($data)-1 ) echo ','; else echo "n";
    }
    echo "]n";
    ?>
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。