1

皆さん、入力フィールドに入力するときに jquery load() メソッドを介して要素をロードするという奇妙な状況があります。キーを押すたびに、特定のページをロードする doSearch() 関数を起動します。矢印キーが押された場合にこの doSearch() 関数を起動させたくありませんが、ロードされた要素をナビゲートするには矢印キーが必要です。

これが現在の私のコードの構造です。doSearch() 関数内でわかるように、UP または DOWN 矢印キーに対してテストしています。これらのいずれかが押された場合、load() メソッドは起動されません。ただし、別のキーが押されて load-method が結果を返す場合、ロードされた結果をナビゲートするには上矢印キーと下矢印キーが必要です。

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

            });

        }
    }
}

それを解決する方法はありますか?ご協力ありがとうございました。

よろしくマット

4

1 に答える 1

1

「preventDefaut()」を使用するとどうなりますか?

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

これで問題が解決すると思います。

于 2011-01-17T18:59:24.280 に答える