我有一个带有文本字段的网络应用程序,可以在下拉列表中进行搜索。 我使用此文本框进行搜索
@Html.TextBox("Search",
"",
new { id = "Search" + @Model.ID + "",
@class = "Search" })
在此下拉列表中
@Html.DropDownListFor(
m => m.MainSynonymId,
new SelectList(ViewBag.SynonymList,
"ID",
"Name",
Model.MainSynonymId),
new { id = "MainSynonymList" + @Model.ID + "",
@class = "SynonymList TableClass" })
如果我在搜索输入中填写一些内容,下拉列表应该自动仅包含搜索字母的内容元素。所以我在 keydown 上实现了一个 jquery 方法来触发所有输入,将它们发送到服务器并用 json 发送回客户端。 这是 jQuery:
$('.Search').bind("keydown", function (event) {
var fieldId = $(this).attr('id');
var field = "Search";
var id = fieldId.replace(field, '');
$.getJSON('@Url.Action("GetSpecific", "Models")', { Name: $('#' + fieldId + '').val() }, function (data) {
var items;
$.each(data, function (i, g) {
items += "<option value='" + g.Value + "'>" + g.Text + "</option>";
$.ajaxSetup({ cache: false });
});
$('#MainSynonymList' + id + '').html(items);
});
});
通讯工作几乎正常。唯一的问题是,keydown 上的方法不采用使用的键,而是采用输入字段中的所有其他键。
例如:我在输入字段“example”中写入,在我按下最后一个“e”后,触发的事件仅将单词“exampl”发送到服务器。 我做错了什么?
最佳答案
这是因为 keydown
事件在将值添加到字段之前触发。请改用 keyup
或 keypress
。
关于jquery - Keydown 事件不使用最新的输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20211239/