ユーザーが入力フィールドに入力すると、関連する検索結果に表示される単純な検索フィールドを作成しました。1つを除いて、すべてがうまく機能します。入力フィールドには、テーブルでユーザーに表示される検索結果を取得するjQuery関数をトリガーする「onkeyup」イベントがあります。最初の結果(行)が強調表示されます。ユーザーが矢印キーを使用して検索結果のテーブルを上下に移動できるようにしたい。ただし、入力フィールドには「onkeyup」イベントトリガーがあるため、下矢印キーを押すとすぐに(次のテーブル行を簡単に強調表示)、「onkeyup」jQuery関数が再度トリガーされ、最初の検索結果が再度強調表示されます(最初に行)。矢印キーが「押されていない」たびに「onkeyup」関数がトリガーされないようにする方法が必要です。これは意味がありますか?私はこれに間違った方法でアプローチしていますか?コードの一部を次に示します。
HTML:
<input id="search" type="text" onkeyup="showResult(this.value)" />
jQuery:
function showResult(str)
{
var e = str.charAt( str.length-1 )
if(e.keyCode == 38 || e.keyCode == 40)
{
$(document).keydown(function(e)
{
if (e.keyCode == 40)
{
$('tr.highlight').next("tr").addClass("highlight");
$('tr.highlight:first').removeClass("highlight");
return false;
}
else if (e.keyCode == 38)
{
$('tr.highlight').prev("tr").addClass("highlight");
$('tr.highlight:last').removeClass("highlight");
return false;
}
});
else
{
// code that gets the search results
}