JQuery自动完成UI搜索开始

使用JQuery AutoComplete UI,1.8,我需要更改搜索,使其仅匹配字符串的开头。 背景我的来源来自一个我无法控制的ajax调用返回15,000及其相应的PK。 value是名称,Id是整数PK。下面的代码可以工作,但由于我搜索的是15,00个字符串,它们匹配字符串中的任何位置,因此速度太慢。 我已经看过这篇文章,链接,但我无法弄清楚怎么做而不会丢失源中的Id字段。

我需要搜索只匹配data.d中的值的开头而不会丢失Id字段。 这是一个ASP.Net应用程序,但我认为这不重要。 想法?

$("#companyList").autocomplete({ minLength: 4, source: data.d, focus: function(event, ui) { $('#companyList').val(ui.item.value); return false; }, select: function(event, ui) { $('#companyList').val(ui.item.value); $('#').val(ui.item.Id); return false; } }); 

这是一个可能的解决方案。 你们是在正确的轨道上。 我使用了一个json字符串作为数据源,我知道我要匹配的文本是在item.label字段中。 它可能在item.value中:输入字段:

    

jQuery的

 var states = [{"id":"1","label":"Armed Forces Americas (except Canada)","abbrev":"AA"},{"id":"2","label":"Armed Forces Africa, Canada, Europe, Middle East","abbrev":"AE"},{"id":"5","label":"Armed Forces Pacific","abbrev":"AP"},{"id":"9","label":"California","abbrev":"CA"},{"id":"10","label":"Colorado","abbrev":"CO"},{"id":"14","label":"Florida","abbrev":"FL"},{"id":"16","label":"Georgia","abbrev":"GA"},{"id":"33","label":"Northern Mariana Islands","abbrev":"MP"},{"id":"36","label":"North Carolina","abbrev":"NC"},{"id":"37","label":"North Dakota","abbrev":"ND"},{"id":"43","label":"New York","abbrev":"NY"},{"id":"46","label":"Oregon","abbrev":"OR"}]; $("#state").autocomplete({ source: function(req, response) { var re = $.ui.autocomplete.escapeRegex(req.term); var matcher = new RegExp( "^" + re, "i" ); response($.grep( states, function(item){ return matcher.test(item.label); }) ); }, minLength: 2, select: function(event, ui) { $('#state_id').val(ui.item.id); $('#abbrev').val(ui.item.abbrev); } }); 

这是一个工作示例: http : //www.jensbits.com/demos/autocomplete/index3.php