Jquery Keydown事件未使用最新输入值
我有一个带有文本字段的Web应用程序,可以在dropdownlist中搜索。 我使用此文本框进行搜索Jquery Keydown事件未使用最新输入值,jquery,ajax,json,Jquery,Ajax,Json,我有一个带有文本字段的Web应用程序,可以在dropdownlist中搜索。 我使用此文本框进行搜索 @Html.TextBox("Search", "", new { id = "Search" + @Model.ID + "", @class = "Search" }) 在这个下拉列表中 @Html.DropDownListFor( m => m.MainSynonym
@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之后,触发的事件oly将exampl这个词发送到服务器。
我做错了什么?这是因为keydown事件在值添加到字段之前触发。改用keyup或keypress。这是因为keydown事件在将值添加到字段之前触发。使用keypup或keypress代替。只需将代码中的keypdown替换为keypup即可 这应该成为
$('.Search').bind("keydown", function (event) {}
这个
这是一个只需将代码中的keydown替换为keyup即可 这应该成为
$('.Search').bind("keydown", function (event) {}
这个
下面是一个为什么不使用$this.val而不是使用这样一个复杂的代码?好主意,但它只替换代码中的一个点。我仍然需要从textfield中获取id,因为它位于一个表中,每一行都有这样的方法,每个方法都应该只触发它所在行的下拉列表。只有触发此事件的textbox才会被$this引用。是的,我用$this.val替换了$+fieldId+.val,但我仍然需要var fieldId=$this.attr'id';var字段=搜索;var id=fieldId.replacefield;要选择正确的下拉列表$'MainSynonymList'+id+.htmlitems;。为什么不使用$this.val而不是使用这样一个复杂的代码呢?好主意,但它只替换代码中的一个点。我仍然需要从textfield中获取id,因为它位于一个表中,每一行都有这样的方法,每个方法都应该只触发它所在行的下拉列表。只有触发此事件的textbox才会被$this引用。是的,我用$this.val替换了$+fieldId+.val,但我仍然需要var fieldId=$this.attr'id';var字段=搜索;var id=fieldId.replacefield;要选择正确的下拉列表$'MainSynonymList'+id+.htmlitems;。谢谢你这就是我错过的:没问题,很高兴能帮忙。谢谢你这就是我错过的:没问题,很高兴能帮忙。