jQuery自動完成插件Autocomplete使用實例


一、Autocomplete實例介紹

jQuery Autocomplete 是流行的實現自動填充功能插件,能夠很好的實現輸入框的自動完成(autocomplete)、建議提示(input suggest)功能,支持ajax數據加載。

用戶在使用文本框搜索信息時,實現類似百度、Google文本輸入框自動補全智能提示效果。

Demo功能效果如下:

二、Demo Html代碼片段

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery自動完成組件Autocomplete Demo</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.autocomplete.js"></script>
<script type="text/javascript" src="localdata.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.autocomplete.css" />
<script type="text/javascript">
    $().ready(function () {
        function log(event, data, formatted) {
            $("#txtSelectName").val(data.name);
            $("#txtSelectValue").val(data.value);
        }

        //objects為json數據源對象
        $("#txtSelectName").autocomplete(objects, {
            minChars: 0, //表示在自動完成激活之前填入的最小字符
            max: 5, //表示列表里的條目數
            autoFill: true, //表示自動填充
            mustMatch: false, //表示必須匹配條目,文本框里輸入的內容,必須是data參數里的數據,如果不匹配,文本框就被清空
            matchContains: true, //表示包含匹配,相當於模糊匹配
            scrollHeight: 200, //表示列表顯示高度,默認高度為180

            formatItem: function (row) {
                return row.name;
            },
            formatMatch: function (row) {
                return row.name;
            },
            formatResult: function (row) {
                return row.value;
            }
        });

        $(":text, textarea").result(log).next("#txtSelectValue").click(function () {
            $(this).prev().search();
        });
    });
</script>
</head>
<body>
<div id="content">jQuery自動實現<br /><br />名稱:<input type="text" id="txtSelectName" /> 值:<input type="text" id="txtSelectValue" /></div>
</body>
</html>

三、數據源介紹

Demo中使用了Json數據源,Autocomplete插件同時也支持js數組和遠程數據源。

var objects = [
    { name: "項目一", value: "1" },
    { name: "項目二", value: "2" },
    { name: "項目三", value: "3" },
    { name: "項目四", value: "4" },
    { name: "項目五", value: "5" },
    { name: "項目六", value: "6" },
    { name: "項目七", value: "7" },
    { name: "abc", value: "abc" },
    { name: "abce", value: "abce" },
    { name: "abcef", value: "abcef" },
    { name: "bcd", value: "bcd" },
    { name: "bcdfdsaf", value: "bcd" },
    { name: "bcdfds", value: "bcdfds" },
    { name: "cbd", value: "cbd" },
    { name: "efg", value: "efg" },
    { name: "fgdaf", value: "fgdaf" },
    { name: "fasfs", value: "fasfs" }];

四、常用參數介紹

* minChars (Number):
 在觸發autoComplete前用戶至少需要輸入的字符數.Default: 1,如果設為0,在輸入框內雙擊或者刪除輸入框內內容時顯示列表
* width (Number): 
 指定下拉框的寬度. Default: input元素的寬度
* max (Number):
 autoComplete下拉顯示項目的個數.Default: 10
* delay (Number):
 擊鍵后激活autoComplete的延遲時間(單位毫秒).Default: 遠程為400 本地10
* autoFill (Boolean):
 要不要在用戶選擇時自動將用戶當前鼠標所在的值填入到input框. Default: false
* mustMatch (Booolean):
 如果設置為true,autoComplete只會允許匹配的結果出現在輸入框,所有當用戶輸入的是非法字符時將會得不到下拉框.Default: false
* matchContains (Boolean):
 決定比較時是否要在字符串內部查看匹配,如ba是否與foo bar中的ba匹配.使用緩存時比較重要.不要和autofill混用.Default: false
* selectFirst (Boolean):
 如果設置成true,在用戶鍵入tab或return鍵時autoComplete下拉列表的第一個值將被自動選擇,盡管它沒被手工選中(用鍵盤或鼠標).當然如果用戶選中某個項目,那么就用用戶選中的值. Default: true
* cacheLength (Number):
 緩存的長度.即對從數據庫中取到的結果集要緩存多少條記錄.設成1為不緩存.Default: 10
* matchSubset (Boolean):
 autoComplete可不可以使用對服務器查詢的緩存,如果緩存對foo的查詢結果,那么如果用戶輸入foo就不需要再進行檢索了,直接使用緩存.通常是打開這個選項以減輕服務器的負擔以提高性能.只會在緩存長度大於1時有效.Default: true
* matchCase (Boolean):
 比較是否開啟大小寫敏感開關.使用緩存時比較重要.如果你理解上一個選項,這個也就不難理解,就好比foot要不要到FOO的緩存中去找.Default: false
* multiple (Boolean):
 是否允許輸入多個值即多次使用autoComplete以輸入多個值. Default: false
* multipleSeparator (String):
 如果是多選時,用來分開各個選擇的字符. Default: ","
* scroll (Boolean):
 當結果集大於默認高度時是否使用卷軸顯示 Default: true
* scrollHeight (Number):
 自動完成提示的卷軸高度用像素大小表示 Default: 180
* formatItem (Function):
 為每個要顯示的項目使用高級標簽.即對結果中的每一行都會調用這個函數,返回值將用LI元素包含顯示在下拉列表中. Autocompleter會提供三個參數(row, i, max): 返回的結果數組, 當前處理的行數(即第幾個項目,是從1開始的自然數), 當前結果數組元素的個數即項目的個數. Default: none, 表示不指定自定義的處理函數,這樣下拉列表中的每一行只包含一個值.
* formatResult (Function):
 和formatItem類似,但可以將將要輸入到input文本框內的值進行格式化.同樣有三個參數,和formatItem一樣.Default: none,表示要么是只有數據,要么是使用formatItem提供的值.
* formatMatch (Function):
 對每一行數據使用此函數格式化需要查詢的數據格式. 返回值是給內部搜索算法使用的. 參數值row

五、實例Demo下載

jQuery Autocomplete自動實現Demo下載

 


免責聲明!

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



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