我正在尝试使用jQuery autocomplete.result()
来获取与用户选择的名称值相关联的ID。这是脚本:
<script type="text/javascript">
$("#DonorName").autocomplete($('#ajaxListMatchingDonorNamesUrl').val())
.result(function (evt, data, formatted) {
$("#SelectedDonorId").val(data[1]);
});
</script>
这是我试图使用它的HTML:
Html.TextBox("DonorName", "")
<input
id="ajaxListMatchingDonorNamesUrl"
type="hidden"
value="path" />
<input type="hidden"
name="SelectedDonorId" />
Firebug在data []中显示正确的值(例如,[0] =名称和1 = ID)。但是,当表单POST时,SelectedDonorId
值为空。
我尝试从html中删除,但这只是在POST后从param集合中删除了密钥。
我错过了什么? THX。
答案 0 :(得分:0)
您的数据类型是什么?
我认为自动完成功能期望项目列表不是字符串。 当我添加split(“”)时,你的代码对我有用(对于空格分隔的字符串列表)。
$("#DonorName").autocomplete($('#ajaxListMatchingDonorNamesUrl').val().split(' '))
我还将数据[1]更改为数据。
$("#SelectedDonorId").val(data);
换句话说......当我把它拿回来时,数据不是一个数组。
编辑:从评论添加...将'id'属性添加到隐藏的输入框而不是'name'属性。
答案 1 :(得分:0)
更改此
$("#SelectedDonorId").val(data[1]);
到
$("input[name=SelectedDonorId]").val(data[1]);
答案 2 :(得分:0)
谢谢大家。简单地添加id ='SelectedDonorId'让一切正常,就像Santosc认为的那样。
注意:Data []确实是正确的,因为我传回了
形式的列表名称| ID “\ n” 个
其中name =自动完成功能将起作用并显示,
id是我想在POST方法中使用的引用,
“\ n”通常是(换行符)。
autocomplete有一些很酷的魔力.resres做'split',并将名称放在Data [0]中,将id放在Data [1]中。所以只需要引用它就可以了。