2011-01-17 9 views
1

こんにちは、 私は入力フィールドに入力するときにjquery load()メソッドで要素を読み込むこの奇妙な状況があります。すべてのキーを押すと、特定のページを読み込むdoSearch()関数が呼び出されます。私は、矢印キーが押されていてもロードされた要素をナビゲートするために矢印キーが必要な場合、このdoSearch()関数を起動したくありません。jquery:keyupでajaxリクエストをロードする - 矢符はありませんか?

これは私のコードの構造です。 doSearch()関数の中で見ることができるように、私は上矢印キーまたは下矢印キーに対してテストしています。そのうちの1つが押された場合、load()メソッドは起動されません。しかし、別のキーを押して、ロードメソッドが結果を返す場合は、ロードされた結果をナビゲートするために、上下矢印キーが必要です。

var searchTimer = 0; 

$('.searchbox').keyup(function(e) { 

    switch (e.keyCode) { 
     //case 13: // Enter 
     //case 38: // Up 
     //case 40: // Down 
     break; 

     default: 
     if (searchTimer != 0) { 
      clearTimeout(searchTimer); 
     } 

     searchTimer = setTimeout(function() { 
      doSearch(e.keyCode); 
     }, 250); 
    } 

}); 

function doSearch(keyCode) { 

    if ($('.searchbox').val() != '') { 

     if (keyCode != 38 && keyCode != 40) { 

      searchTimer = 0; 

      $('#searchresults').load('/sitemap/' + ' #inner', function() { 

       //modify loaded elements 

       //key navigation through elements with UP and DOWN arrow keys 

      }); 

     } 
    } 
} 

これを解決する方法はありますか。 ありがとうございます。

よろしくマット

答えて

1

あなたが "preventDefautを()" とは何を使用している場合は?

switch (e.keyCode) { 
    case 13: // Enter 
    case 38: e.preventDefault() // Up 
    case 40: e.preventDefault()// Down 
    break; 

これはあなたの問題を解決すると思います。

+0

それはありません!私はあなたが私の問題の間違った考えを持っていると思う!私は上矢印と下矢印でロードメソッドをトリガしない方法を見つける必要がありますが、ロードメソッドが何かを返す場合にそれらを使用できるようにする必要があります。 – matt

関連する問題