我正在尝试为文本框实现自动完成方法。
我想使用基于jquerys autocomplete提供的here
的示例<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
$("input#autocomplete").autocomplete({
source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});
});
</script>
</head>
第一个主要问题是我不知道将我的值传递给source:
通过说我的意思是,假设我有一个服务器端的ASP.NET函数 GetTheResults作为listof(字符串)或 GetTheResults为string()
我应该如何将这些值作为自动完成所需的源传递?
第二个问题是具体方式不使用AJAX。 这意味着我猜表单的负载我会将所有可用的值加载到源。这不是一个矫枉过正的事吗?
你有什么建议?
谢谢和问候!
答案 0 :(得分:0)
您可以手动将内容从服务器写出到客户端。尝试创建一个名为:
的公共方法public string GetJs()
{
var data = this.GetTheResults();
string output = "[";
bool comma = false;
foreach (var i in data)
{
if (comma)
output += ", ";
else
comma = true;
output += '" + i + "'";
}
return output + "]";
}
将客户端脚本更改为:
$(document).ready(function() {
$("input#autocomplete").autocomplete({
source: <%= GetJs() %>
});
});
您可能必须注入&lt;%=%&gt;作为一个字符串,而不是:
source: eval("<%= GetJs() %>")
或者你可以将整个JS从页面写到输出。
HTH。
答案 1 :(得分:0)
哦,也许我误解了 - 是GetTheResults
服务器端的ASP.NET函数?你没说。这假设它是一个客户端JavaScript函数。如果它是服务器端,为什么不实现AJAX方式?
如果GetTheResults
返回所有值,那么我认为你可以用内联填充它,即
$("input#autocomplete").autocomplete({
source: GetTheResults()
}
});
然后控件将过滤列表以供显示。或者您可以使用该页面上记录的功能源机制,例如
$("input#autocomplete").autocomplete({
source: function(request, response) {
var results = GetTheResultsForInput(request.term);
response(results);
}
});