不要在jquery / asp.net自动完成中过滤结果

时间:2011-12-20 18:08:37

标签: jquery asp.net autocomplete

我使用ajax调用完成了jquery自动完成。我正在我的代码后面的方法中进行过滤。我不想在UI中过滤它们。怎么做。更具体的是,如果用户输入'St.'例如我正在归还有'圣'的价值观以及结果中的'圣'。但是jquery没有用'Saint'显示结果。如何才能获得jquery自动完成功能以显示“圣”?

Jquery中的代码

 function GetNames(text) {
$.ajax({
type: "POST",
url: "Default.aspx/GetSchools",
dataType: "json",
data: '{ "data":"' + text + '"}',
contentType: "application/json; charset=utf-8",
success: function(data) {
$('#university').autocomplete({
source: data.d,
focus: function(event, ui) {
$('#university').val(ui.item.Descr);
return false;
},
select: function(event, ui) {
$('#university').val(ui.item.Descr);
$('#universityID').val(ui.item.UnivCode);
return false;
}
});
}
});
}

.cs文件中的代码

public static List<DataClass.School> GetSchools(string data)
        {
            DataTable dt = (DataTable)HttpContext.Current.Session["Schools"];

            data = data.ToLower();
            Debug.WriteLine(data);

            var ret = new List<TestApplication.DataClass.School>();
            ret = (from l in dt.AsEnumerable()
                   let s = l["Descr"].ToString().ToLower()
                   where (s.Contains(data) || s.Contains("saint"))
                   select new TestApplication.DataClass.School
                   {
                       Descr = l["Descr"].ToString(),
                       UnivCode = l["UnivCode"].ToString()
                   }).Take(20).ToList();

            Debug.WriteLine(ret.Count.ToString());

        return ret.ToList();
        }

2 个答案:

答案 0 :(得分:0)

它应该像将源设置为网址一样简单,类似于jqueryui documentation

中的示例

答案 1 :(得分:0)

好。在网络的某个地方,它声明我可能会改变jQuery。由于我在代码隐藏中过滤结果,我改变了我的jQuery不过滤任何东西。在jquery-ui.js的自动完成扩展方法中改为

var matcher = new RegExp($.ui.autocomplete.escapeRegex(''), "i");

这很有效。