首頁 web前端 js教程 基於javascript實現的搜尋時自動提示功能_javascript技巧

基於javascript實現的搜尋時自動提示功能_javascript技巧

May 16, 2016 pm 04:24 PM
javascript 搜尋 自動提示

當在資料量不是很大,而且沒有後端對應的功能介面的時候,一些簡單的搜尋功能基本上是前端去實現的,正好最近用到,寫了一個,貼出來和大家分享:

效果圖:

功能描述:

按下鍵盤後及時搜尋條目中的漢字,漢字對應的拼音和號碼;

實現思路:

先將條目中的漢字轉換成拼音,然後將漢字,拼音,數字拼接成規律的字串,放入數組,然後每次按下鍵盤後判斷input 中的值是漢字,拼音,還是數字,然後按固定的規律去循環數組,這樣就能找到對應的條目了;

啟用方式:

// search-test-inner --->  最外層div
// search-value --->  input 輸入框
// search-value-list --->  搜尋結果顯示div
// search-li --->  搜尋條目
new SEARCH_ENGINE("search-test-inner","search-value","search-value-list","search-li");
注意:搜尋條目加上兩個臨時數據,data-name 和 data-phone ,用來儲存漢字和數字。

說明:拼音的轉換用到了一個叫jQuery.Hz2Py-min.js 的插件,由於這個插件只能轉換input 裡的值,所以程式碼裡多了一個步驟,先將值放入一個暫時的input ,再轉換。

HTML:

複製程式碼 程式碼如下:


   

       
       

       

       

           

                 

    •                 13914157895
                      戰士
                 

    •            

    •                 15112357896
                      好友
                 

    •            

    •                 13732459980
                      盜賊
                 

    •            

    •                 18015942365
                      德魯伊
                 

    •            

    •                 15312485698
                      武僧
                 

    •            

    •                 13815963258
                      死靈法師
                 

    •            

    •                 13815934258
                      聖騎士
                 

    •        

       


    CSS:

    複製程式碼如下程式碼:

    * { 填充:0;保證金:0; }
    ol , ul { 列表樣式:無; }
    正文 { 字體大小:12px;顏色:#333; }
    .search-test-inner { 邊距:100px 自動;內邊距:10px;寬度:400px;背景:#e0e0e0;邊框半徑:10px;框陰影:1px 2px 6px #444; }
    ;框陰影:1px 2px 6px #444; }
    ;框陰影:1px 2px 6px #444; }
    .search-val-inner { 邊距底部:20px;內邊距:10px;背景:#fff; }
    .member-list-inner .search-li { 填入:10px; }
    .search-value-list { 邊距頂部:10px; }
    .search-value-list li { 填充:5px; }
    .member-list-inner .search-li .phone,
    .search-value-list li .phone { float: right; }
    .search-value { 寬度:100%;高度:30px;行高:30px; }
    .tips { 字型粗細:粗體; }

    JS:

    複製程式碼
    程式碼如下:

    //------------------------------------------------ ---【初始化】
    function SEARCH_ENGINE(dom,searchInput,searchResultInner,searchList){
        //儲存拼音 漢字 數字的陣列
        this.searchMemberArray = [];
        //作用對象
        this.dom = $("." dom);
        //搜尋框
        this.searchInput = "." searchInput;
        //搜尋結果方塊
        this.searchResultInner = this.dom.find("." searchResultInner);
        //搜尋對象的清單清單
        this.searchList = this.dom.find("." searchList);
        //轉換成拼音存入陣列
        this.transformPinYin();
        //綁定搜尋事件
        this.searchActiveEvent();
    }
    SEARCH_ENGINE.prototype = {
        //-----------------------------【轉換成拼音,拼音、漢字、數字存入陣列】
        transformPinYin : function(){
            //暫時存放資料物件
            $("body").append('');
            var $pinyin = $("input.pingying-box");
            for(var i=0;i             //存放名字,並轉換成拼音
                $pinyin.val(this.searchList.eq(i).attr("data-name"));
                //漢字轉換成拼音
                var pinyin = $pinyin.toPinyin().toLowerCase().replace(/s/g,"");
                //漢字
                var cnCharacter = this.searchList.eq(i).attr("data-name");
                //數字
                var digital = this.searchList.eq(i).attr("data-phone");
                //存入陣列
                this.searchMemberArray.push(pinyin "&" cnCharacter "&" digital);
            }
            //刪除暫時存放資料物件
            $pinyin.remove();
        },
        //-----------------------------【模糊搜尋關鍵字】
        fuzzySearch : function(type,val){
            var s;
            var returnArray = [];
            //拼音
            if(type === "pinyin"){
                s = 0;
            }
            //漢字
            else if(type === "cnCharacter"){
                s = 1;
            }
            //數字
            else if(type === "digital"){
                s = 2;
            }
            for(var i=0;i             //包含字元
                if(this.searchMemberArray[i].split("&")[s].indexOf(val) >= 0){
                    returnArray.push(this.searchMemberArray[i]);
                }
            }
            return returnArray;
        },
        //-----------------------------【輸出搜尋結果】
        postMemberList : function(tempArray){
            var html = '';
            //有搜尋結果
            if(tempArray.length > 0){
                html = '
  • 搜尋結果('tempArray.length')
  • ';
                for(var i=0;i                 var sArray = tempArray[i].split("&");
                    html = '
  • ';
                    html = '' sArray[2] '';
                    html = '' sArray[1] '';
                    html = '
  • ';
                }
            }
            //無搜尋結果
            其他{
                if($(this.searchInput).val() != ""){
                    html = '
  • 無搜尋結果…
  • ';
                }其他{
                    this.searchResultInner.html("");
                }
            }
            this.searchResultInner.html(html);
        },
    //----------------------------------------【綁定搜尋事件】
        searchActiveEvent : function(){
            var searchEngine = this;
            $(document).on("keyup",this.searchInput,function(){
                //臨時搭建已找到的倉庫
                var tempArray = [];
                var val = $(this).val();
                //判斷拼音的正則
                var pinYinRule = /^[A-Za-z] $/;
                //判斷漢字的正則
                var cnCharacterRule = new RegExp("^[u4E00-u9FFF] $","g");
                //判斷整數的正規
                var digitalRule = /^[- ]?d (.d )?$/;
                //只搜尋3種狀況
                //拼音
                if(pinYinRule.test(val)){
                    tempArray = searchEngine.fuzzySearch("拼音",val);
                }
                //漢字
                else if(cnCharacterRule.test(val)){
                    tempArray = searchEngine.fuzzySearch("cnCharacter",val);
                }
                //數字
                else if(digitalRule.test(val)){
                    tempArray = searchEngine.fuzzySearch("digital",val);
                }
                其他{
                    searchEngine.searchResultInner.html('
  • 無搜尋結果…
  • ');
                }
                searchEngine.postMemberList(tempArray);
            });
        }
    };

    效果是不是非常棒呢,小夥伴們美化下就可以用到自己專案中了

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    熱門話題

    Java教學
    1664
    14
    CakePHP 教程
    1421
    52
    Laravel 教程
    1316
    25
    PHP教程
    1266
    29
    C# 教程
    1239
    24
    百度進階搜尋怎麼用 百度進階搜尋怎麼用 Feb 22, 2024 am 11:09 AM

    百度高級搜尋怎麼用百度搜尋引擎是目前中國最常用的搜尋引擎之一,它提供了豐富的搜尋功能,其中之一就是進階搜尋。進階搜尋可以幫助使用者更精確地搜尋到所需的信息,提高搜尋效率。那麼,百度高級搜尋要怎麼使用呢?第一步,打開百度搜尋引擎首頁。首先,我們需要開啟一個百度的官方網站,也就是www.baidu.com。這是百度搜索的入口。第二步,點選進階搜尋按鈕。在百度搜尋框的右側,有

    閒魚怎麼搜尋用戶 閒魚怎麼搜尋用戶 Feb 24, 2024 am 11:25 AM

    閒魚怎麼搜尋用戶?在軟體閒魚中,我們可以直接在軟體裡面去找想要溝通的使用者。但卻不清楚該怎麼搜尋用戶。在搜尋後的用戶中查看即可。接下來就是小編為用戶帶來的搜尋用戶方式介紹的介紹,有興趣的用戶快來一起看看吧!閒魚怎麼搜尋用戶答:在搜尋後的用戶中查看詳情介紹:1、進入軟體,點選搜尋框。 2、輸入使用者名稱,點選搜尋。 3.再選擇搜尋框下的【用戶】,即可找到對應用戶了。

    如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

    如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

    WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

    WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

    wps表格找不到正在搜尋的資料,請檢查搜尋選項位置 wps表格找不到正在搜尋的資料,請檢查搜尋選項位置 Mar 19, 2024 pm 10:13 PM

    智能為主導的時代,辦公室軟體也普及開來,Wps表格由於它的靈活性被廣大的辦公室人員採用。在工作上要求我們不只是要學會簡單的表格製作和文字輸入,我們要掌握更多的操作技能,才能完成實際工作中的任務,有數據的報表,運用表格更方便更清楚更準確。今天我們帶給大家的課程是:wps表格找不到正在搜尋的資料,為什麼請檢查搜尋選項位置? 1.先選取Excel表格,雙擊開啟。然後在該介面中,選取所有的儲存格。  2、然後在該介面中,點選頂部工具列裡「檔案」裡的「編輯」選項。  3、其次在該介面中,點選頂部工具列裡的“

    手機淘寶怎麼搜尋店鋪 搜尋店舖名的方法 手機淘寶怎麼搜尋店鋪 搜尋店舖名的方法 Mar 13, 2024 am 11:00 AM

    手機淘寶app軟體內提供的商品好物非常多,隨時隨地想買就買,而且件件都是正品,每一件商品的價格標籤一清二楚,完全沒有任何的複雜操作,享受更加便捷的購物樂趣。隨心所欲自由搜尋選購,不同品類的商品板塊都是開放的,添加個人的收貨地址以及聯絡電話,方便快遞公司聯繫到你,實時查看最新的物流動態,那麼有些新人用戶第一次使用它,不知道如何搜尋商品,當然只需要在搜尋欄輸入關鍵字就能找到所有的商品結果,自由選購根本停不下來,現在小編在線詳細為手機淘寶用戶們帶來搜尋店鋪名的方法。  1.先打開手機淘寶app,

    JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

    JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

    簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

    JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

    See all articles