jquery - Keydown 事件不使用最新的输入值

标签 jquery ajax json

我有一个带有文本字段的网络应用程序,可以在下拉列表中进行搜索。 我使用此文本框进行搜索

@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 事件在将值添加到字段之前触发。请改用 keyupkeypress

关于jquery - Keydown 事件不使用最新的输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20211239/

相关文章:

javascript - 创建一个接受用户输入并在页面加载时将其添加到句子中的表单

javascript - 在 vb.net 中使用 javascript hide()/show()

java - Jackson 反序列化为 POJO,无需注释

javascript - 创建自己的函数时出现未知错误

javascript - 使用jquery包装单词-$不是函数

javascript - 我正在尝试使用按钮随意移动 CSS 元素,我尝试使用 offset 并且 onlick 不起作用

javascript - 载入div后执行脚本

返回 AJAX 调用数据的 JavaScript 函数

python - Pandas 在 to_json 时删除空值

java - 使用 GSON 解析 JSON 返回 null