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); 新版本使用完后调用。
相关文章
相关标签/搜索