故事到此为止......
我想学习 JQuery,并且我还构建了一个 MVC ASP.NET 应用程序,它需要“键入时搜索”搜索功能 - 也非常适合学习 JQuery!到目前为止(在stackoverflowers的帮助下)我已经设法获得了 AJAX/JSON 位。现在我想评估每个按键并针对创建为无序列表的 JSON 数组进行验证。我试图实现的是仅在列表中显示包含输入内容的帐号。所以,我的理由是检查 keydown 事件并验证它。暂时我只是将帐号的颜色更改为隐藏它们的红色,只是为了证明我的逻辑有效。
到目前为止我的 JQuery 代码....
http://jsfiddle.net/garfbradaz/JYdTU/28/
……为了方便……
$(document).ready(function() {
var $input = $("#livesearchinput"),
filled = false;
$.ajaxSetup({
cache: false
});
$input.keydown(function(key) {
if (!filled) {
filled = true;
$.getJSON("/gh/get/response.json//garfbradaz/MvcLiveSearch/tree/master/JSFiddleAjaxReponses/", function(JSONData) {
var $ul =
$('<ul>').attr({
id: "live-list"
}).appendTo('div#livesearchesults');
$.each(JSONData, function(i, item) {
$.each(item, function(j, val) {
$('<li>').attr({
id: "live-" + val
}).append(val).appendTo($ul);
});
});
});
}
var n = $("li:contains('" + this.value + "')").length;
if (n === 0) {
$("li").removeClass("color-change");
console.log("1. value of n equals " + n + " : " + this.value);
}
else {
$("li:contains('" + this.value + "')").addClass("color-change");
console.log("2. value of n equals " + n + " : " + this.value);
}
});
});</p>
我的问题......
我的问题是,当我使用以下方法评估按键时,this.value在第一个 keydown 事件上为空,然后在整个过程中失步
var n = $("li:contains('" + this.value + "')").length
例子:
如果我输入100004,让我向您展示Chrome中的console.log结果以输入该结果:
结果似乎总是落后一步。keydown 事件是最好使用的事件还是我错过了什么。
和往常一样——谢谢你们,祝你编码愉快。