У меня сложная проблема с автозаполнением. Это для системы обмена сообщениями для веб-сайта, над которым я работаю. Я хочу, чтобы это работало там, где вы вводите имя пользователя, оно возвращается большим пальцем их изображения, его имени и идентификатора. Затем, когда вы выбираете его, я хочу, чтобы он отображал имя пользователя, но когда он отправляет ответ, я хочу, чтобы он отправил обратно их идентификатор (поскольку имя пользователя не уникально).
Я начал с http://blog.schuager.com/2008/09/jquery-autocomplete-json-apsnet-mvc.html в качестве подхода. Однако я использую tageditor.js из Stackoverflow в качестве моего расширителя, просто потому, что мне нравится, как он работает.
редактор тегов связан ниже. Я думаю, что это старая версия.
Мы используем MVC 1.0. Вот мой код:
public ActionResult Recipients(string prefix, int limit)
{
IList<UserProfile> profiles = profileRepository.GetUsers(prefix, limit);
var result = from p in profiles
select new
{
p.ProfileId,
p.FullName,
ImageUrl = GetImageUrl(p)
};
return Json(result);
}
Вот скрипт на странице
<script type="text/javascript">
$(document).ready( function() {
$('#recipients').autocomplete('<%=Url.Action("Recipients", "Filter") %>', {
dataType: 'json',
parse: function(data) {
var rows = new Array();
for(var i=0; i < data.length; i++) {
rows[i] = { data: data[i], value: data[i].ProfileId, result: data[i].FullName };
}
return rows;
},
formatItem: function(row, i, n) {
return '<table><tr><td valign="top"><img src="' + row.ImageUrl + '" /></td><td valign="top">' + row.FullName + '</td></tr></table>';
},
max: 20,
highlightItem: true,
multiple: true,
multipleSeparator: ";",
matchContains: true,
scroll: true,
scrollHeight: 300
});
});
</script>
Итак, что происходит, если обратный вызов работает, мой список показывает изображение и имя пользователя, и когда я выбираю его, он помещает полное имя пользователя в текстовое поле с разделителем. Однако, когда я отправляю форму, отсылаются только имена, а не идентификаторы профиля. Любые идеи о том, как вернуть идентификаторы, не отображая их в текстовом поле?
EDIT:
Вот версия tageditor.js, которую я использую http://www.gotroleplay.com/scripts/tageditor.js