激情五月婷婷综合网_奇米精品一区二区三区四区_91在线码无精品_国产精品久久久久一区二区三区_日韩一区二区在线看_99国产欧美另类久久久精品_日韩电影免费一区_亚洲欧美在线另类_9色porny自拍视频一区二区_久久一区二区三区四区_日本在线不卡视频_欧美日韩三级一区二区_亚洲欧美日韩国产综合在线_国产精品影视网_欧美中文字幕一区_制服.丝袜.亚洲.中文.综合

0712-2888027 189-8648-0214
微信公眾號

孝感風信網絡科技有限公司微信公眾號

當前位置:主頁 > 技術支持 > Javascript/JQuery > jQuery UI Autocomplete根據用戶輸入值自動補全插件

jQuery UI Autocomplete根據用戶輸入值自動補全插件

時間:2016-12-08來源:風信官網 點擊: 1689次
jQuery UI Autocomplete根據用戶輸入值進行搜索和過濾,讓用戶快速找到并從預設值列表中選擇。
 
API手冊參考地址:http://api.jqueryui.com/autocomplete/
 
有了這個插件,你的搜索條將變得更加智能啦!
jQuery UI Autocomplete根據用戶輸入值自動補全插件
 
默認應用的示例代碼:
 
$( ".selector" ).autocomplete({
  appendTo: "#someElem"
});
 
// Getter
var appendTo = $( ".selector" ).autocomplete( "option", "appendTo" );
 
// Setter
$( ".selector" ).autocomplete( "option", "appendTo", "#someElem" );
 
Autocomplete,是一個功能強大的自動完成輸入的jQuery插件,它也是jQuery UI的一部分。

項目應用:

相信用過百度或者Google搜索的讀者一定不會陌生,當我們在搜索框中開始輸入搜索的關鍵字時,搜索引擎就會智能地幫我們聯想并匹配我們所需的搜索關鍵字內容。

Google搜索輸入框的自動完成功能Google搜索輸入框的自動完成功能

現在,我們使用jQuery UI的Autocomplete部件就可以非常簡單方便地實現如上述圖片中Google搜索框所具備的自動完成功能。

jQuery UI 的當前最新版本為1.10.4。由于不同版本之間的用法也有所差異,其他網站關于之前版本的Autocomplete用法介紹并不能完全適用于最新版本。因此,我們有必要了解一下jQuery UI Autocomplete的最新用法。

在使用Autocomplete實現自動完成功能之前,我們先來完成一些準備工作。比如,先編寫包含如下代碼的html文件:

對應的運行效果如下:
 

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>jQuery Autocomplete入門示例</title>
</head>
<body>
 
<label for="language">請輸入指定的語言:</lable>
<input id="language" name="language" type="text">
 
</body>
</html>
 

input.png

在完成上述準備工作之后,我們需要在html代碼中引入jQuery UI的js文件和css文件,由于jQuery UI是依賴于jQuery的,因此我們還需要在引入jQuery UI之前引入jQuery。

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>jQuery Autocomplete入門示例</title>
<!-- 引入jQuery UI的css文件 -->
<link href="http://code.jquery.com/ui/1.10.4/themes/ui-darkness/jquery-ui.css" />
<!-- 引入jQuery的js文件 -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js" ></script>
<!-- 引入jQuery UI的js文件 -->
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.4/jquery-ui.js" ></script>
</head>
<body>
 
<label for="language">請輸入指定的語言:</lable>
<input id="language" name="language" type="text">
 
</body>
</html>

現在,我們就來編寫js代碼讓language輸入框實現自動完成功能。要實現自動完成功能,我們需要如下調用jQuery UI擴展的autocomplete()方法:

$("#language").autocomplete(optionsObj);

這里的optionsObj是一個用于配置autocomplete相關參數選項的JavaScript對象。我們可以參考Autocomplete官方文檔的相關說明來設置該對象。

Autocomplete有一個非常重要的屬性參數source,它表示用于自動完成功能的數據集合。source屬性的值可以是一個數組;也可以是一個字符串,用于表示一個遠程請求的URL地址,通過處理該URL返回的數據從而獲得autocomplete所需的數據;它還可以是一個回調函數,以便于完成一些復雜的數據處理。

現在,我們就使用最簡單的方式,給source屬性指定一個靜態的數組,來初步實現自動完成功能。

$("#language").autocomplete({
source: [ 
    "Chinese",
    "English",
    "Spanish",
    "Russian",
    "French",
    "Japanese",
    "Korean",
    "German"
]
});

此時,使用瀏覽器訪問該html頁面就會發現,我們已經完成的最基本的自動完成功能了。

使用autocomplete實現基本的自動完成功能使用autocomplete實現基本的自動完成功能

不過,有些時候我們希望列表顯示的文本和實際輸入的值并不一致。此時,我們為source指定多個對象的數組,每個對象必須包含label和value屬性,label表示顯示的文本,value表示實際輸入的值(當然它也可以包括其他屬性,你可以自行進行相關操作)。

$("#language").autocomplete({
    // 靜態的數據源,根據label屬性進行顯示或模糊匹配,當給輸入框設置value屬性值
    source: [
        { label: "Chinese", value: 1 },
        { label: "English", value: 2 },
        { label: "Spanish", value: 3 },
        { label: "Russian", value: 4 },
        { label: "French", value: 5 },
        { label: "Japanese", value: 6 },    
    ]
});

// 最上面由多個字符串組成的數組,會被視為label和value值相同、均為該字符串的對象

更多的時候,我們希望該輸入框顯示的還是label屬性值,但還要給另外的元素(例如隱藏文本域)設置value屬性值,或者做一些其他處理。我們可以使用select事件來協助處理。

$("#language").autocomplete({
    // 靜態的數據源
    source: [
        { label: "Chinese", value: 1, sayHi: "你好" },
        { label: "English", value: 2, sayHi: "Hello" },
        { label: "Spanish", value: 3, sayHi: "Hola" },
        { label: "Russian", value: 4, sayHi: "Привет" },
        { label: "French", value: 5, sayHi: "Bonjour" },
        { label: "Japanese", value: 6, sayHi: "こんにちは" },    
    ],
    select: function(event, ui){
        // 這里的this指向當前輸入框的DOM元素
        // event參數是事件對象
        // ui對象只有一個item屬性,對應數據源中被選中的對象
        $(this).value = ui.item.label;
        $("#lang_id").val( ui.item.value );
        $("#sayHi").html( ui.item.sayHi );
        
        // 必須阻止事件的默認行為,否則autocomplete默認會把ui.item.value設為輸入框的value值
        event.preventDefault();     
    }
});

在實際應用上,我們的數據源并不是一成不變的。大多數情況下,我們的數據都保存在數據庫中,此時,我們就需要使用autocomplete通過AJAX請求獲取遠程數據作為數據源。

$("#language").autocomplete({
source: "public.php"
});

對應的 ajax-actions.php 的服務器頁面代碼如下:

<?php
header('Content-Type:text/html;charset=UTF-8');
 
//為了方便舉例,這里使用數組來模擬,你也可以在實際應用中從數據庫中讀取數據
//返回的數據最好是數組或對象類型的JSON格式字符串
$languages = array('Chinese', 'English', 'Spanish', 'Russian', 'French', 'Japanese', 'Korean', 'German');
 
echo json_encode($languages);
?>

此時,我們再次訪問該頁面,我們仍然可以看到自動完成的輸入效果。

從遠程服務器獲取數據的自動完成功能從遠程服務器獲取數據的自動完成功能

注意:細心的讀者可能已經注意到了,不管是從js數組中獲取數據,還是從后臺服務器獲取數據,我們的數據并沒有發生變化;但是,我們在從后臺獲取數據的頁面輸入"c"時,顯示了所有的數據項,而不是如之前一樣只顯示篩選過濾之后的"Chinese"和"French"。這是因為,當我們從遠程請求獲取數據時,Autocomplete認為服務器已經進行了過濾處理,返回的數據都是直接可用的,無需再過濾。

在發送AJAX請求時,Autocomplete會把當前輸入框中的文字以默認參數名term的形式追加到我們設置的URL地址后面。當我們輸入一個c時,Autocomplete實際發送的請求路徑為/ajax-actions.php?term=c

在上面的實例中,由于我們使用的是php數組來模擬服務器返回的數據,沒有根據用戶的輸入來返回對應的數據,才會導致上述結果。如果在實際應用中,使用類似如下SQL語句來查詢數據,則不會存在該問題。

<?php 
// 注意:對于用戶輸入一般需要進行額外的安全處理
$term = $_GET['term'];
$sql = "select column1 as label, column2 as value, ... from table1 where column1 like '$term%'";
$languages = query($sql);
echo json_encode($languages);
?>

此外,有些時候我們需要根據用戶的輸入或其他操作來構造不同的請求URL,我們可以為source指定函數。Autocomplete將用戶輸入交給該函數,該函數可以進行任何處理,然后把通過任何方式獲得的數據交給Autocomplete處理即可。

$("#language").autocomplete({
    // 通過函數來獲取并處理數據源
    source: function(request, response){
        // request對象只有一個term屬性,對應用戶輸入的文本
        // response是一個函數,在你自行處理并獲取數據后,將JSON數據交給該函數處理,以便于autocomplete根據數據顯示列表
        
        // 自行處理并獲取數據...
        var dataObj = [...]; // 表示處理后的JSON數據
        response(dataObj); // 最后將數據交給autocomplete去展示        
    }
});

在上面的講解中,我們介紹了autocomplete的必需參數選項source。除此之外,還有許多的參數選項可以給我們提供更加強大的其他輔助功能。


欄目列表
推薦內容
熱點內容
展開
激情五月婷婷综合网_奇米精品一区二区三区四区_91在线码无精品_国产精品久久久久一区二区三区_日韩一区二区在线看_99国产欧美另类久久久精品_日韩电影免费一区_亚洲欧美在线另类_9色porny自拍视频一区二区_久久一区二区三区四区_日本在线不卡视频_欧美日韩三级一区二区_亚洲欧美日韩国产综合在线_国产精品影视网_欧美中文字幕一区_制服.丝袜.亚洲.中文.综合
一区二区三区丝袜| 精品在线观看免费| 久久丁香综合五月国产三级网站 | 极品少妇xxxx精品少妇偷拍| 色综合天天综合色综合av| 久久综合久久鬼色| 男女性色大片免费观看一区二区| 一本大道久久a久久精二百| 国产日产精品一区| 狠狠色综合日日| 日韩欧美成人激情| 日韩精品亚洲一区二区三区免费| 色婷婷av久久久久久久| 亚洲欧美影音先锋| 成人久久18免费网站麻豆| 久久天天做天天爱综合色| 久热成人在线视频| 欧美videos中文字幕| 青青草国产成人av片免费| 欧美日韩免费观看一区三区| 一区二区三区免费| 在线亚洲高清视频| 一区二区三区日韩欧美| va亚洲va日韩不卡在线观看| 国产精品免费av| jlzzjlzz欧美大全| 日韩毛片在线免费观看| 99热精品国产| 亚洲欧美日韩一区二区三区在线观看| 成人污视频在线观看| 国产精品免费观看视频| 成人av影院在线| 综合久久综合久久| 91在线国内视频| 日韩美女啊v在线免费观看| 97精品超碰一区二区三区| 亚洲欧洲成人精品av97| 91在线观看污| 一区二区三区免费看视频| 欧美在线高清视频| 视频一区中文字幕| 欧美成人在线直播| 国产美女av一区二区三区| 国产日韩精品一区二区浪潮av | 欧美精品久久99久久在免费线| 亚洲图片欧美一区| 在线播放日韩导航| 麻豆成人久久精品二区三区小说| 欧美sm极限捆绑bd| 国产精品亚洲午夜一区二区三区 | 久久精品久久精品| 久久综合色8888| 国产精品一级二级三级| 国产精品午夜在线| 日本精品一级二级| 日韩**一区毛片| 精品国产髙清在线看国产毛片| 国内精品国产三级国产a久久| 国产欧美日韩亚州综合| 97久久超碰国产精品电影| 亚洲福利一二三区| 日韩欧美综合一区| 中文字幕精品综合| 成人精品免费网站| 亚洲人亚洲人成电影网站色| 欧美日韩五月天| 精品亚洲欧美一区| 中文字幕一区二区三区av| 欧美日免费三级在线| 久久精品国产77777蜜臀| 国产偷国产偷精品高清尤物| 99精品视频在线观看免费| 午夜精品一区在线观看| www激情久久| 99国产精品国产精品久久| 午夜精品免费在线观看| 久久尤物电影视频在线观看| av在线不卡电影| 日本午夜精品视频在线观看| 久久久久久久久久久久久夜| 91污片在线观看| 蜜臀99久久精品久久久久久软件| 亚洲国产成人自拍| 欧美绝品在线观看成人午夜影视| 国产一区二区日韩精品| 亚洲免费在线观看| 精品少妇一区二区三区在线播放| 成人网页在线观看| 午夜激情一区二区三区| 久久久国产精华| 欧美性色黄大片手机版| 国产精品综合在线视频| 亚洲香蕉伊在人在线观| 2021久久国产精品不只是精品| 91啪在线观看| 精品一区二区免费在线观看| 亚洲精品乱码久久久久久日本蜜臀| 日韩欧美综合在线| 色天天综合色天天久久| 国产一区二区0| 亚洲高清免费视频| 国产精品嫩草影院com| 69堂成人精品免费视频| 成人av资源在线| 蜜桃视频一区二区三区 | 强制捆绑调教一区二区| 国产精品国模大尺度视频| 欧美一区二区视频网站| 97精品超碰一区二区三区| 裸体在线国模精品偷拍| 亚洲精品中文在线| 国产亚洲精品aa| 51精品视频一区二区三区| 91在线看国产| 国产大片一区二区| 青青草国产精品97视觉盛宴| 一区二区三区美女视频| 日本一区二区三区在线观看| 欧美一区永久视频免费观看| 一本一本久久a久久精品综合麻豆| 国产美女在线精品| 日韩高清一级片| 亚洲精品老司机| 国产精品蜜臀在线观看| 精品国产百合女同互慰| 欧美巨大另类极品videosbest| 色综合中文字幕国产 | 欧美精品第1页| 91玉足脚交白嫩脚丫在线播放| 韩国精品久久久| 日韩av电影天堂| 亚洲国产视频在线| 亚洲人快播电影网| 国产精品欧美精品| 久久久欧美精品sm网站| 91精品国产一区二区| 在线这里只有精品| www.亚洲激情.com| 国产成人丝袜美腿| 韩国女主播成人在线| 日韩和欧美一区二区| 亚洲制服丝袜一区| 亚洲色图第一区| 17c精品麻豆一区二区免费| 国产欧美va欧美不卡在线| 久久亚洲精品小早川怜子| 日韩精品中文字幕一区| 91精品蜜臀在线一区尤物| 欧美日韩国产色站一区二区三区| 亚州成人在线电影| 亚洲乱码国产乱码精品精小说| 国产精品入口麻豆九色| 国产欧美日韩久久| 国产亚洲污的网站| 欧美精品一区男女天堂| 日韩午夜电影av| 日韩一级成人av| 日韩午夜精品视频| 欧美一卡二卡三卡四卡| 欧美一区二区福利视频| 91精品国产91久久久久久一区二区| 欧美精品日韩一本| 91精品国产色综合久久| 67194成人在线观看| 5858s免费视频成人| 3d成人动漫网站| 91精品欧美综合在线观看最新| 欧美日韩卡一卡二| 8x8x8国产精品| 日韩午夜电影av| 精品精品国产高清a毛片牛牛| 欧美第一区第二区| 精品奇米国产一区二区三区| 日韩欧美精品在线视频| 日韩欧美在线影院| 精品粉嫩超白一线天av| 久久久亚洲国产美女国产盗摄| 国产午夜亚洲精品羞羞网站| 欧美国产国产综合| 亚洲人xxxx| 午夜国产精品一区| 久久精品久久精品| 国产高清一区日本| 99久久99久久综合| 欧洲一区在线观看| 欧美精品高清视频| 精品久久一区二区三区| 国产调教视频一区| 最新中文字幕一区二区三区 | 国产99久久久精品| 不卡一二三区首页| 色婷婷综合久色| 欧美日韩dvd在线观看| 91精品国产手机| 久久综合999| 国产精品精品国产色婷婷| 一区二区三区日韩精品视频| 视频一区欧美精品| 国产毛片精品一区| 色综合夜色一区|