我的自动完成工作正常,因为我可以选择文本。但问题是我想获得所选项目的键值(Id)。所以我可以设置隐藏字段并使用服务器端。
这是我的网络方法代码:
[WebMethod]
public List<string> AuotExtenderHotel(string hotelname)
{
DataSet ds = objHotelList.GetHotels(hotelname);
List<string> result = new List<string>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
result.Add(dr["HotelName"].ToString());
}
return result;
}
这是我的jquery自动完成代码
<script type="text/javascript">
$(document).ready(function () { HotelText(); });
function HotelText() {
$(".txthotel").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "WebService.asmx/AuotExtenderHotel",
data: "{'hotelname':'" + $('.txthotel').val() + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});
}
</script>
答案 0 :(得分:1)
如果您的服务器没有返回除字符串数组以外的任何内容,您如何期望该项目的ID?我会修改Web方法以返回包含ID和值对的对象的JSON对象。像
[{ "id": "1", "label": "MyFirstHotel", "value": "MyFirstHotel" },{ "id": "2", "label": "MySecondHotel", "value": "MySecondHotel" }]
答案 1 :(得分:0)
我真的希望现在已经弄明白了,但以防万一......
文档说明选择一个项目时会激活“select”事件并将原型设为select: function(event, ui) { ... }
在函数中放置一个console.log(ui)
会将ui Object显示为:
{
item :
{
label : "the selected label",
value : "the selected value"
}
}