JQuery автозаполнение с идентификаторами - PullRequest
0 голосов
/ 17 декабря 2009

Я пытаюсь использовать jQuery autocomplete.result(), чтобы получить идентификатор, связанный со значением имени, которое выбирает пользователь. Вот сценарий:

<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 показывает правильные значения в данных [] (например, [0] = Имя и 1 = ID). Однако, когда форма POSTs, значение SelectedDonorId будет пустым.

Я попытался удалить из html, но это просто удаляет ключ из коллекции параметров после POST.

Что мне не хватает? Thx.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2009

Изменить это

$("#SelectedDonorId").val(data[1]);

до

$("input[name=SelectedDonorId]").val(data[1]);
0 голосов
/ 18 декабря 2009

Спасибо всем. Просто добавив id = 'SelectedDonorId', все заработало, как и думал Сантос.

Примечание: данные [] действительно верны, потому что я возвращаю список в форме

имя | идентификатор "\ п"

где имя = то, что автозаполнение будет работать и показать,

id - это ссылка, которую я хочу использовать в методе POST,

"\ n" - это то, что обычно есть (перевод строки).

autocomplete имеет некоторую крутую магию в том, что .result выполняет 'split' и помещает имя в Data [0] и идентификатор в Data [1]. Так что просто ссылка на это все, что нужно.

0 голосов
/ 17 декабря 2009

Какой тип ваших данных?

Я полагаю, что автозаполнение ожидает список элементов, а не строку. когда я добавил split (""), ваш код работал для меня (для списка строк, разделенных пробелами).

$("#DonorName").autocomplete($('#ajaxListMatchingDonorNamesUrl').val().split(' '))

Я также изменил данные [1] на данные.

$("#SelectedDonorId").val(data);

другими словами ... когда я вернусь, данные не будут массивом.

РЕДАКТИРОВАТЬ: Добавление из комментариев ... добавить атрибут «id» в скрытое поле ввода вместо атрибута «name».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...