JQuery: загрузить запрос AJAX на Keyup - без стрелок? - PullRequest
1 голос
/ 17 января 2011

Эй, ребята, У меня есть странная ситуация, когда я загружаю элементы с помощью метода 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

            });

        }
    }
}

Есть идеи, как это решить? Спасибо за вашу помощь.

С уважением, Мэтт

1 Ответ

1 голос
/ 17 января 2011

Что делать, если вы используете "protectDefaut ()"?

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

Думаю, это решит вашу проблему.

...