下面是我的代码自动建议,一切都很好 我需要fromlocationid来存储隐藏字段
(value:item.fromlocationname, label:item.fromlocationname)
<script type='text/javascript'>//<![CDATA[
$(window).load(function(){
var json;
var searchRequest = null;
$("#field").autocomplete({
maxLength: 5,
source: function(request, response) {
if (searchRequest !== null) {
searchRequest.abort();
}
searchRequest = $.ajax({
url: 'getfromlo',
method: 'post',
dataType: "json",
data: {term: request.term, json: json},
success: function(data) {
searchRequest = null;
response($.map(data.items, function(item) {
return {
value: item.fromlocationname,
label: item.fromlocationname
};
}));
}
}).fail(function() {
searchRequest = null;
});
}
});
});//]]>
答案 0 :(得分:1)
从您对该问题的评论:
我需要将fromlocationid存储到隐藏字段
你的隐藏领域是什么?你怎么认出来的?例如,如果它看起来像这样:
<input type="hidden" id="myHiddenField" name="myHiddenField" />
然后你可以像这样设置它的值:
$('#myHiddenField').val(item.fromlocationid);
“隐藏”表单字段的工作方式与任何其他表单字段一样,在使用jQuery时,您使用the .val()
function来读取/写入其值。
编辑:如果您正在阅读的值在item
对象中,那么显然该对象仅存在于声明它的函数范围内:
function(item) {
return {
value: item.fromlocationname,
label: item.fromlocationname
};
}
所以你可以在这里使用它:
function(item) {
$('#myHiddenField').val(item.fromlocationid);
return {
value: item.fromlocationname,
label: item.fromlocationname
};
}
但这似乎完全正确无误。请注意,此功能将针对item
中的每个data.items
进行多次评估。因此,您将多次设置input
的值,之后它将仅包含data.items
数组中最后一个元素的值。
所以你可能需要至少将一些思想放在你实际想要完成的逻辑中。机械地作为语言的一部分,您可以将值设置为input
。从逻辑上讲,你实际上要完成的目标仍然不明确,你需要处理它。