У меня возникли проблемы с созданием виджета автозаполнения jQuery для меня. Я использую список пар ключ/значение с сервера.jquery-ui-autocomplete Как я могу установить идентификатор в текстовое поле, и он вернет мне текстовое значение
У меня есть следующие требования:
- Если пользователь установить идентификатор значения, как он Knowes код города и вместо внесения вводить название города, он поставил кодекс city-- Я хочу, чтобы автозаполнение поставило название города, и оно не дошло!
Я редактирую мой код, теперь он работает!
добавить это линииif (data.d.length == 1 && request.term.match(/\d+/g)) SetValue(textbox, hidden, data.d[0]); else
и функция function SetValue(textbox, hidden, value){ textbox.focus().val(value.Text); hidden.val(value.Semel);}
Другое дело, если один использует ту же страницу для создания и editting - на перезагрузки страницы, а editting, вам нужно воссоздать все промежутки и т. д. для значений, и я хочу отправить с сервера только код автозаполнения, а не текстовое значение, и я хочу, когда я установлю значение в текстовое поле, автозаполнение начнет работать и будет b звенеть значение с сервера
Но с этим я до сих пор застрял:
Я не знаю, как вызвать «автозаполнения» событие с послать значение (значение запроса)
Вот мой C# код:[WebMethod(EnableSession = true)] [ScriptMethod] public List<IEntityBase> FetchList(string Text, string Code, string Dspl, int NumRecordes, string TableName) { Text = Server.UrlDecode(Text); List<Tavla> tvListById = null; int ignored = 0; if (int.TryParse(Text, out ignored)) tvListById = TvList.GetTvListById(TableName, ignored, Code, Dspl);if (tvListById != null && tvListById.Count != 0) return tvListById.Cast<IEntityBase>().ToList(); var fetchShem = TvList.GetData(TableName, Code, Dspl) .Where(m => m.Shem.ToLower().Contains(Text.ToLower())) .Take(NumRecordes); return fetchShem.Cast<IEntityBase>().ToList();
}
и вот мой Jquery код:
enter code here
textbox.autocomplete({
source: function (request, response) {
$.ajax({
url: "AutoComplete.asmx/" + funcName,
data: "{ 'Text': '" + escape(request.term) + "','Code':'" + code + "','Dspl':'" + dspl + "','NumRecordes':'" + numrecordes + "','TableName':'" + tablename + "'}",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
if (data.d.length == 1 && request.term.match(/\d+/g))
SetValue(textbox, hidden, data.d[0]);
else
response($.map(data.d, function (item) {
return {
label: item.Text,
value: item.Semel
}
}));
}
},
error: function (msg) { alert(msg); }
});
},
minLength: minLength,
select: function (event, ui) {
var selectedObj = ui.item;
if (selectedObj) {
textbox.val(selectedObj.label);
hidden.val(selectedObj.value);
} return false; },
});function SetValue(textbox, hidden, value) {
textbox.focus().val(value.Text);
hidden.val(value.Semel);
}
Я редактировать мой вопрос – user1501754