1

嘿伙计们,我有这种奇怪的情况,我在输入输入字段时通过 jquery load() 方法加载元素。在每次按键时,我都会触发一个加载特定页面的 doSearch() 函数。如果按下箭头键,我不希望触发此 doSearch() 函数,但我需要箭头键来浏览加载的元素。

这是我现在的代码结构。正如您在 doSearch() 函数中看到的那样,我正在针对向上或向下箭头键进行测试。如果按下其中之一,则不会触发 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

            });

        }
    }
}

知道如何解决吗?感谢您的帮助。

问候马特

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 回答