jquery使用列表自动完成<;字符串>;作为来源
我有文本框名txtEmailList,我为它提供了自动完成列表jquery使用列表自动完成<;字符串>;作为来源,jquery,asp.net,jquery-ui,ajaxpro,Jquery,Asp.net,Jquery Ui,Ajaxpro,我有文本框名txtEmailList,我为它提供了自动完成列表 <asp:TextBox runat="server" ID="txtEmailList" CssClass="txtAutoComplete"> 输出如下(在firebug中显示为纯文本),如何将此数组附加到源属性。(我不能使用$.ajax方法,因为我需要使用ajaxpro作为办公规则),所以我从ajax调用中获取数组列表,如何绑定autocomplete [“列表1”、“列表2”、“列表3”、“列表4”];/*/
<asp:TextBox runat="server" ID="txtEmailList" CssClass="txtAutoComplete">
输出如下(在firebug中显示为纯文本),如何将此数组附加到源属性。(我不能使用$.ajax方法,因为我需要使用ajaxpro作为办公规则),所以我从ajax调用中获取数组列表,如何绑定autocomplete
[“列表1”、“列表2”、“列表3”、“列表4”];/*//这是jquery的输出响应(来自firebug)
[AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
公共列表自动完成(字符串查询)
{
List objLisItmes=新列表();
对象列表添加(“列表1”);
添加(“列表2”);
添加(“列表3”);
添加(“列表4”);
返回目标视图;
}
这是响应头中的firebug输出
缓存控制无缓存内容长度40内容类型文本/普通;
charset=utf-8日期2012年3月7日星期三格林尼治标准时间10:45:37
Expires-1parano-cache
而不是返回列表。我将返回字符串数组,如下所示:
[AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public string[] AutoComplete(string query)
{
List<string> objLisItmes = new List<string>();
objLisItmes.Add("List 1");
objLisItmes.Add("List 2");
objLisItmes.Add("List 3");
objLisItmes.Add("List 4");
return objLisItmes.ToArray();
}
[AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
公共字符串[]自动完成(字符串查询)
{
List objLisItmes=新列表();
对象列表添加(“列表1”);
添加(“列表2”);
添加(“列表3”);
添加(“列表4”);
返回objLisItmes.ToArray();
}
而不是使用
$('#txtEmailList')
试用
$('input[id$="txtEmailList"]')
由于您使用的是服务器控件文本框,因此您的ID很可能会以类似“parentID1\U parentID2\U txtEmailList”的形式结束。上面的代码将获取ID以“txtEmailList”结尾的输入
下面是我在我的测试项目中是如何做的,它是如何工作的。当然我没有使用AjaxPro,所以我不确定你会如何使用它,但也许它会给你一些想法
<script type="text/javascript">
$(function () {
var element = $('input[id$="TextBox1"]');
element.autocomplete({
source: function (request, response) {
$.ajax({
url: "Default.aspx/GetList",
data: "{ 'term': '" + request.term + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function(data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
value: item
}
}))
}
})
}
});
});
</script>
$(函数(){
var元素=$('input[id$='TextBox1']);
元素自动完成({
来源:功能(请求、响应){
$.ajax({
url:“Default.aspx/GetList”,
数据:“{'term':'”+request.term+“}”,
数据类型:“json”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
dataFilter:函数(数据){返回数据;},
成功:功能(数据){
响应($.map)(数据.d,函数(项){
返回{
价值:项目
}
}))
}
})
}
});
});
不应该是:
$('#txtEmailList').autocomplete({source: function(request, response) {
// this is the ajax call, which is running successfully
var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value; //(ajaxpro functions)
response(msg);
}
});
?
如果没有,我建议您尽可能使用console.log(msg)来分析响应对象。只要确保AJAX调用返回的字符串格式如下。 将其存储在变量中。 然后使用它定义
source
属性,如下所示:
var availableValues = ["List 1","List 2","List 3","List 4"];
// var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value;
$( "#txtEmailList" ).autocomplete({
source: availableValues
});
我想你需要返回你从服务器上得到的东西…怎么做?我已经尝试了响应(msg.d),但它没有显示在自动完成。。。写这个:
returnmsg代码>我尝试返回消息,但没有成功;(你能同时显示文本框的html吗?会有什么变化?返回数组会有帮助吗?它会有什么帮助吗?列表应该可以正常工作,并且看起来是这样的,因为你说你要返回项目列表。你能显示文本框的html吗?谢谢:)任何方式都可以。现在,我不明白为什么这里需要ToArray()?区别是什么?因为我直接访问它?我认为这不是答案。甚至它在jquery的开放函数中的提交也不会在网格视图中自动完成。渲染成那样。它位于div中的纯文本框中,即使我检查了渲染id,它也与我在jquery选择器中给出的相同。所以,我想问题在于响应类型
$('#txtEmailList').autocomplete({source: function(request, response) {
// this is the ajax call, which is running successfully
var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value; //(ajaxpro functions)
response(msg);
}
});
var availableValues = ["List 1","List 2","List 3","List 4"];
// var msg = Assessments_JqueryAutoComplete.AutoComplete(request.term).value;
$( "#txtEmailList" ).autocomplete({
source: availableValues
});