带有ID的jQuery自动完成功能

时间:2009-12-16 21:15:44

标签: jquery autocomplete

我正在尝试使用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。

3 个答案:

答案 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]中。所以只需要引用它就可以了。