input文本輸入框自動提示-autocomplete

首先來說岗宣,由于作者剛接觸網(wǎng)站的開發(fā)淋样,這篇文章寫得有點亂习蓬,主要是記錄給自己看的,怕以后忘記了,方便到時候查閱企巢,若給您帶來了不便浪规,還請見諒。若有什么建議誉裆,請留言缸濒。非常感謝庇配。

--------------------------------------------步入正題--------------------------------------------

問題(目標):目標樣式如圖1所示,當在文本框中輸入字符時耀鸦,實時進行提示相關(guān)信息啸澡,供用戶參考和選擇嗅虏。

圖1 文本框自動提示

分析:那么這個功能該如何實現(xiàn)呢旋恼,jQuery提供了一個插件autocomplete可以根據(jù)用戶輸入值進行搜索和過濾奄容,讓用戶快速找到并從預設(shè)值列表中選擇产徊。

**What should we do ? **
How to do it ?

首先:下載jQueryjQuery UI的包
jQuery 下載地址:http://jquery.com/download/
jQuery UI 下載地址: http://jqueryui.com/download/ 舟铜,在下載jQuery UI 時要注意谆刨,最后一步選擇的是主題類型。如圖2所示刁岸。

圖2 下載 jQuery UI 選擇主題類型

將下載下來的庫文件(作者以本機為例) jquery-3.2.1.min.js 虹曙、jquery-ui.min.js 番舆、jquery-ui.css 放到你要寫的 html 文件同一個文件夾中或者你能找到的路徑下。

第一種:靜態(tài)數(shù)據(jù)顯示 ??? 源碼下載

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery UI Autocomplete - Default functionality</title>
    <link rel="stylesheet" href="jquery-ui.min.css"> <!-- 此處根據(jù)你自己的路徑進行設(shè)置 -->
    <script src="jquery-3.2.1.min.js"></script> <!-- 此處根據(jù)你自己的路徑進行設(shè)置 -->
    <script src="jquery-ui.min.js"></script> <!-- 此處根據(jù)你自己的路徑進行設(shè)置 -->
    <script>
        $(function() {
            var availableTags = [
                "ActionScript",
                "AppleScript",
                "Asp",
                "BASIC",
                "C",
                "C++",
                "Clojure",
                "COBOL",
                "ColdFusion",
                "Erlang",
                "Fortran",
                "Groovy",
                "Haskell",
                "Java",
                "JavaScript",
                "Lisp",
                "Perl",
                "PHP",
                "Python",
                "Ruby",
                "Scala",
                "Scheme"
            ];
            $( "#tags" ).autocomplete({
                source: availableTags
            });
        });
    </script>
</head>
<body>
    <div class="ui-widget">
        <label for="tags">Tags: </label>
        <input type="text" id="tags">
    </div>
</body>
</html>

效果如圖3所示。注意這個下拉框的顏色是由你所選擇的jQuery UI 的主題決定的返奉。

圖3 顯示效果圖

第二種:動態(tài)數(shù)據(jù)顯示
通過ajax實時訪問后臺數(shù)據(jù)庫衡瓶,獲取數(shù)據(jù)后顯示在提示框內(nèi)哮针。

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery UI Autocomplete - Default functionality</title>
    <link rel="stylesheet" href="jquery-ui.min.css">
    <script src="jquery-3.2.1.min.js"></script>
    <script src="jquery-ui.min.js"></script>
    <script>
        $(function () {
            $("#tags").autocomplete({
                source: "/ceshi/", //請求后臺坦袍,具體的URL根據(jù)你的實際情況進行設(shè)置
            });
    </script>
</head>
<body>
    <div class="ui-widget">
        <label for="tags">Tags: </label>
        <input type="text" id="tags">
    </div>
</body>
</html>

推薦文章1:http://www.runoob.com/jqueryui/example-autocomplete.html主要在于比較全面捂齐,若當你出現(xiàn)需要滾動條、寬度設(shè)置等等問題的時候包颁,可以在里面查找相應(yīng)的例子進行copy娩嚼,本文主要是起一個記錄和啟發(fā)的作用。
推薦文章2:http://blog.csdn.net/qililong88/article/details/51941641看他里面的ajax部分


最后講述一個問題
將例1定義的數(shù)組中添加幾個中文元素以及部分帶空格的元素佃迄,可以發(fā)現(xiàn)贵少,當我們在利用中文輸入法尚未完成輸入就已經(jīng)顯示了一部分查詢結(jié)果滔灶,如圖4所示。

var availableTags = [
        "面向 對象",
        "面向過程",
        "How are you!",
        "Hello world!",
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"
      ];
圖4 中文尚未輸入完成便顯示部分查詢結(jié)果

通過分析,我們可以看到萄涯,在我們輸入中文的時候默認就有一個空格顯示在輸入框中涝影,所以查詢匹配的都是帶有空格的元素争占。

解決的辦法:

  1. 在后臺進行判斷臂痕,若輸入的是空格,則丟棄姆怪,不進行查詢
  2. 設(shè)置最小匹配長度澡绩,minLength為2,即當至少輸入2個字符才進行匹配溪掀。

代碼如下 ??? 源碼下載

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Autocomplete - Default functionality</title>
  <link rel="stylesheet" href="jquery-ui.min.css"> <!-- 此處根據(jù)你自己的路徑進行設(shè)置 -->
  <script src="jquery-3.2.1.min.js"></script> <!-- 此處根據(jù)你自己的路徑進行設(shè)置 -->
  <script src="jquery-ui.min.js"></script> <!-- 此處根據(jù)你自己的路徑進行設(shè)置 -->
  <script>
    $(function() {
      var availableTags = [
        "面向 對象",
        "面向過程",
        "How are you!",
        "Hello world!",
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"
      ];
        $( "#tags" ).autocomplete({
        source: availableTags,
        minLength: 2
        });
    });
  </script>
</head>
<body>
  <div class="ui-widget">
      <label for="tags">Tags: </label>
      <input type="text" id="tags">
  </div>
</body>
</html>


該文章于2017年8月16日于CSDN上首次發(fā)表揪胃,2017年12月24日搬家至此喊递!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末册舞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盛杰,更是在濱河造成了極大的恐慌藐石,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件于微,死亡現(xiàn)場離奇詭異逗嫡,居然都是意外死亡,警方通過查閱死者的電腦和手機株依,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門驱证,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恋腕,你說我怎么就攤上這事抹锄。” “怎么了荠藤?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵伙单,是天一觀的道長哈肖。 經(jīng)常有香客問我吻育,道長,這世上最難降的妖魔是什么淤井? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任布疼,我火速辦了婚禮,結(jié)果婚禮上庄吼,老公的妹妹穿的比我還像新娘缎除。我一直安慰自己,他們只是感情好总寻,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布器罐。 她就那樣靜靜地躺著,像睡著了一般渐行。 火紅的嫁衣襯著肌膚如雪轰坊。 梳的紋絲不亂的頭發(fā)上铸董,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音肴沫,去河邊找鬼粟害。 笑死,一個胖子當著我的面吹牛颤芬,可吹牛的內(nèi)容都是我干的悲幅。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼站蝠,長吁一口氣:“原來是場噩夢啊……” “哼汰具!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起菱魔,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤留荔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后澜倦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聚蝶,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年藻治,在試婚紗的時候發(fā)現(xiàn)自己被綠了碘勉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡桩卵,死狀恐怖恰聘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吸占,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布凿宾,位于F島的核電站矾屯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏初厚。R本人自食惡果不足惜件蚕,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一旅薄、第九天 我趴在偏房一處隱蔽的房頂上張望济舆。 院中可真熱鬧揉抵,春花似錦枢劝、人聲如沸稿饰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘁傀。三九已至楞件,卻和暖如春衫生,著一層夾襖步出監(jiān)牢的瞬間裳瘪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工罪针, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彭羹,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓泪酱,卻偏偏與公主長得像派殷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子墓阀,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容