使用自动完成功能填充多个文本框
问题描述:
我有一个使用jquery自动填充功能来弹出的文本框。我的自动完成结果的来源是通过XML文件中的ASP.NET Web服务收集的。该XML文件有这样的基本结构:使用自动完成功能填充多个文本框
<RAIL_INTERSECTIONS>
<RAIL_INT RR="BNSF" RR_DIV="FED" RR_SUBDIV="MAIN" ADDRESS="6700" STREET="LINCOLN" BRANCH="ALVIN" MILE_POST="146" />
...
</RAIL_INTERSECTIONS>
自动完成拉STREET从文件属性和填充我的文本框中。
另外,我的表单上还有两个其他文本框,我想根据自动完成文本框中的值选择自动填充。这些值也包含在XML文件中 - RR和RR_DIV,如上所示。现在,我只需使用以下代码来调用我的web服务并为街道获取单个值。
$(function() {
$(".tb").autocomplete({
source: function (request, response) {
$.ajax({
url: "rail_intersection_info.asmx/GetCrossingLocations",
data: "{ 'location': '" + 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
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
minLength: 2
});
});
我的缩写Web服务看起来是这样的:
List<string> streets = new List<string>();
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(Server.MapPath(XmlCrossingFile));
XmlNodeList xmlNodeList = xmlDocument.GetElementsByTagName("RAIL_INT");
for (int i = 0; i < xmlNodeList.Count; i++)
{
streets.Add(xmlNodeList[i].Attributes["STREET"].Value);
}
var data = streets.Where(m => m.ToLower().StartsWith(location.ToLower()));
return data.ToList();
我的问题是,我如何从我的web服务和自动popluate基础上,选定值其他文本框返回多个值第一个文本框?
答
当选择该项目并用结果填充文本字段时,难道你不能发射另一个AJAX查询吗?发送选定的项目值并让服务器回复您想要填充的数据。
在AJAX成功方法,设置文本框来什么都该数据有:
$('input[name=textbox1]').change(function(){
$.ajax(
{
...
success: function(data)
{
$('input[name=otherTextbox1]').val(data.el1);
$('input[name=otherTextbox2]').val(data.el2);
}
...