关于jquery autocomplete排序问题

来源:互联网 发布:如何找到网络水军 编辑:程序博客网 时间:2024/05/16 08:40

最近使用jquery autocomplete插件自动生成列表时发现个问题,后台以及排过序的json数据发送到前台通过autocomplete自动生成列表是顺序老是会乱,而且是那种不规则的乱(只有某几个会跑来跑去),测试老是追着,很是头疼;

引用的是Version: 1.5.2这个版面的js,后来看js发现onclickShowAll这个方法导致,以下为函数;

onclickShowAll = function($this,settings,e) {
// get the current text of the input field
var text = $this.val();
var element_text;
var re;
var data;
// store last text
settings._lastText = text;
// reset the timeout...
if (settings._retryTimeout) {
window.clearTimeout(settings._retryTimeout);
settings._retryTimeout = null;
}
// dont change the result the user is browsing...
if (e && (e.keyCode === 13 || e.keyCode === 38 || e.keyCode === 40)) {
return;
}
settings._lastRequest = Date.now();


// are we looking at a source array or remote data?
if ($.isArray(settings.source)) {
// this function allows meta characters like +, to be searched for.
// Example would be C++
var escape = function( value ) { return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); };
//data = settings.source.sort().filter(function(element) { //默认使用sort排序
data = settings.source.filter(function(element) { //不使用sort排序,后台已默认排序
// matching from start, or anywhere in the string?
if (settings.matchFromStart) {
// from start
element_text, re = new RegExp('^' + escape(text), 'i');
} else {
// anywhere
element_text, re = new RegExp(escape(text), 'i');
}
if ($.isPlainObject(element)) {
element_text = element.label;
} else {
element_text = element;
}
return re.test(element_text);
});
//console.log("buildItems"+data);
buildItems($this, data, settings);
}

}

以上方法默认使用了sort排序,导致我的json数据排序规则混乱,红色部分为原始代码,绿色部分为修改后排序正常的代码,不用sort()函数排序;

0 0