jquery 仿百度搜索下拉框的插件

jopen 9年前發布 | 94K 次閱讀 jQuery自動完成插件 jQuery插件 jQuery

今天寫了個下拉插件分享出來
效果: jquery 仿百度搜索下拉框的插件, 可以搜素,也可以使用上下鍵選擇匹配出來的值


css

.select4_box{border: 1px solid #5897fb;position: absolute;width:250px;background: #fff;
border-radius: 4px;-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
box-shadow: 0 4px 5px rgba(0, 0, 0, .15);z-index: 9999;}
.select4_box ul{padding: 0px;margin: 5px;}
.select4_box ul li{list-style: none;padding: 3px 7px 4px; cursor: pointer;}
.select4_box ul li:hover{background: #51A9A9;color: #fff;}
.select4_box ul li.active{background: #3875d7;
color: #fff;}



html
<input type="text"  name="Shoushuid"  class="Shoushuid"  autocomplete="off">
<input type="text"  name="Jiancha_xiangmu"  class="Jiancha_xiangmu"  autocomplete="off">



jQuery插件
(function($){
    $.fn.extend({
        select4:function(options){
            var defaults = {
                ajax_url:true 
            }
            var options = $.extend(defaults, options);

            return this.each(function(){
                $(".h2").remove();                
                var mythis = $(this);

                $(document).on("click",".select4_box li",function(){
                    mythis.val($(this).text());
                    $(".select4_box").remove();
                });

                $(document).click(function(event) {
                    $(".select4_box").remove();
                });

                $(".select4_box").click(function(event) {
                    event.stopPropagation();
                });

                mythis.click(function(event) {
                    var val = $(this).val();
                    console.log(val);
                    var mythis = $(this);
                    var width = $(this).width()+14+"px";
                    var top = $(this).position().top+30;
                    var left = $(this).position().left;
                    $.ajax({
                        url:options.ajax_url,
                        dataType:"json",
                        data:{name:val},
                        success:function(json){
                            if(json.data){
                                var html = '<div class="select4_box"><ul>';
                                $.each(json.data,function(k,v){
                                    html += '<li alt="'+v.id+'">'+v.name+'</li>';
                                });
                                html+='</ul></div>'
                                $(".select4_box").remove();
                                mythis.after(html);
                                $(".select4_box").css({top:top,left:left,width:width});
                            }
                        }
                    });
                });

                mythis.keyup(function(event) {
                    if(event.keyCode==40){
                        var index = $(".select4_box li.active").index()+1;
                        $(".select4_box li").eq(index).addClass('active').siblings().removeClass('active');
                        mythis.val($(".select4_box li.active").text());
                    }else if(event.keyCode==38){
                        var index = $(".select4_box li.active").index()-1;
                        if(index<0){
                            index = $(".select4_box li").length-1;
                        }
                        $(".select4_box li").eq(index).addClass('active').siblings().removeClass('active');
                        mythis.val($(".select4_box li.active").text());
                    }else if(event.keyCode==13){                        
                        event.stopPropagation();
                        alert($(".select4_box li.active").text());
                        mythis.val($(".select4_box li.active").text());
                        return false;
                    }else{
                        mythis.trigger("click");
                    }
                });

            });


        }
    });
})(jQuery);



使用

<script>
$(function(){
    //ajax_url是這個input綁定的ajax數據地址
    $(".Jiancha_xiangmu").select4({"ajax_url":"/jiancha/select"});  
    $(".Shoushuid").select4({"ajax_url":"/jiancha/select"});  
});    
</script>


這個ajax的數據必須是這種格式的,當然你也可以改,插件那里我寫的應該都能看懂

jquery 仿百度搜索下拉框的插件


ajax數據,我后臺使用的是go語言,你也可以換成你熟悉的語言

func (this *JianchaController) Select() {
    var name = this.GetString("name")
    where := models.NewWhere()
    if name != "" {
        where["like__name"] = "%" + name + "%"
    }
    data, _ := models.M("jiancha").Where(where).Select()
    this.AjaxReturn(1, "ok", data)
}


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!