Jquery實現類似百度的搜索框


  最近工作中需要做一個搜索框,類似百度的搜索框,需要達到兩個功能:

  1.輸入關鍵字,展示匹配的下拉列表

  2.選擇匹配的項后查出相關內容

  一般電商網站中也經常用到該搜索條,首先分析功能實現,輸入關鍵字馬上顯示匹配項列表,實現該功能輸入框需要綁定"input"事件,然后向后台發送異步請求,將數據展示在頁面上。使用鼠標或上下鍵選擇匹配項,點擊搜索或"Enter"鍵后搜索具體結果。這里要用到兩個異步請求,第一個請求匹配項,第二個請求搜索結果。鍵盤,鼠標以及輸入框的事件都要監聽到,還必須考慮到靈活性,也就是適應各種類似需求,想做好還是有一些難度的,下面分布進行實現。

一.html和css

<body>
    <div id="search-form"></div>
</body>
<style type="text/css">
    *{margin: 0;padding: 0;list-style:none;border:none;}
    body {
        font-family: "microsoft yahei" !important;
        background-color: #FDFFE0;
    }
    :focus {
        outline: none;
    }
    #search-form {
        position: relative;
        top: 50px;
        display: inline;
    }
</style>

二.導入css和js文件

由於博客上傳不了文件,可以去我的git:http://git.oschina.net/manliu.com/search_frame上有完整的項目文件

三.頁面引用js

 

<script type="text/javascript">
var proposals = ['百度1', '百度2', '百度3', '百度4', '百度5', '百度6', '百度7','17素材網','百度','新浪'];

$(document).ready(function(){
    $('#search-form').complete({
        searchIn:function(val){//傳入輸入值,返回匹配值
            /* var reg = /^[\u4F00-\u9FA5\uF900-\uFA2D]/;
            return reg.test(val); */
            var word = "^"+val+".*";
            var rs = [];
            $.each(proposals,function(i,n){
                if(n.match(word)){
                    rs.push(n);
                }
            });
            return rs;
        },
        width:400,
        height: 30,
        submitIn: function(text){//搜索選定的值
            alert(text);        
        }
    });
});
</script>

這里searchIn方法用於返回匹配項,通常在里面定義一個異步請求,向后台取數據,返回一個數組,對於復雜的還需要修改源碼;submitIn用於搜索匹配的結果,一般可異步請求也可同步請求。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM