程序中要把一個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;
};
$.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); 新版本使用完後調用。