나를 위해 jQuery의 자동 완성 위젯을 만드는 데 많은 문제가 있습니다. 서버에서 키/값 쌍 목록을 사용하고 있습니다. jquery-ui-autocomplete ID를 텍스트 상자에 설정하면 텍스트 값이 반환됩니다.
I가 다음과 같은 요구 사항 : 그 도시 과 도시의 이름을 입력하는 instad의 코드를 knowes처럼 사용자가 값의 ID를 설정 그가의 코드를 삽입- 경우 도시 - 나는 자동 완성이 도시의 이름을두기를 바란다. 그리고 그것은 dosn't하다!!
내 코드를 편집합니다. 이제 작동합니다!
내가이 라인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에있는 동안 페이지를 다시로드에, 값에 대한 모든 범위 등을 다시 작성해야하며 텍스트 값이 아닌 자동 완성 코드 만 서버에서 보내려고합니다. 그리고 textBox에 값을 설정하면 autoComplete가 시작됩니다. 일과 의지 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와 코드입니다 :
당신이 다음이 어떤 어려운 야해 모든 국가에 대한 ID가있을 경우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