ここまでの話……
私は 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を使用してキープレスを評価すると、最初のキーダウンイベントで空になり、その後全体的にずれていることです
var n = $("li:contains('" + this.value + "')").length
例:
100004を入力した場合、その結果を入力するためのChromeからのconsole.logの結果を表示させてください。
結果は常に一歩遅れているようです。keydown イベントは使用するのに最適なイベントですか、それとも何か不足していますか?
いつものように - みんなありがとう、幸せなコーディング。