JQuery UI Autocomplete與jquery.autocomplete.js

程序中要把一個select改爲能夠下拉搜索的,就想到了使用下autocomplete.js大概是這麼個東西。java

問了下同窗,推薦我使用Jquery Ui autocomplete,下載下來開始調試使用,終於調好了,可是發現輸入字符後無反應。jquery

就徹底按照官網實例,寫了個數據源發現沒問題,而後就感受應該是數據源的問題,後來想到到源碼中找一下,看看插件究竟是怎麼使用數據源的,找了一會沒找到。ui

很鬱悶不知道什麼問題,而後就又問了下同窗,給我發了一段代碼,發現咱們兩個用的不同,spa

  function parse(data) {
             var parsed = [];
             var rows = data.split( "\n" );
             for (var i = 0 ; i < rows.length; i++) {
                 var row = $.trim(rows[i]);
                 if (row) {
                     row = row.split( "|" );
                     parsed[parsed.length] = {
                         data: row,
                         value: row[ 0 ],
                         result: options.formatResult && options.formatResult(row, row[ 0 ]) || row[ 0 ]
                     };
                 }
             }
             return parsed;
         };
而後就試着再找了找,原來JQuery UI 中名字叫Filter,而後看了下代碼,一會兒明白了,感受好惡心啊。

$.extend( $.ui.autocomplete, {
escapeRegex: function( value ) {
return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
},
filter: function( array, term ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
return $.grep( array, function( value ) {
return matcher.test( value.label || value.value || value );
} );
}
} );插件

原來這個這個匹配的地方,使用的屬性數據源裏面的字段名必須與官網的實例一致。「matcher.test( value.label || value.value || value );」調試

而後就修改下數據源,而後能夠使用了。code

可是,寫完了,我同窗說JQuery UI 的autocomplete是個閹割版,完整版名字叫:jquery.autocomplete.jsorm

一搜索果真是啊,這個版本比jQuery UI的強大不少啊,功能也特別全。害我已經調了那麼久了,其實之前用過這個版本,可是一直感受不正規,就想找個官網能夠下載的。xml

後來發現我在csdn下載過,我之前用的都是這個完整版本,不是閹割版。源碼

JQuery UI 的 autocomplete對jQuery版本還有要求,最後還要寫點代碼,讓兩個jQuery版本能夠在一個頁面出現。

這個詳情請百度。 

大概意思是調用這句話,讓$回覆成被覆蓋的版本。var $jq = jQuery.noConflict(true); 新版本使用完後調用。
相關文章
相關標籤/搜索