Как отменить клавишу со стрелкой в ​​Jquery - PullRequest
1 голос
/ 14 сентября 2011

У меня есть этот код для предложений по автозаполнению YouTube:

$(function(){

    $('#input-field').keyup(function(){
        var val = $(this).val();
        jQTubeUtil.suggest(val, function(response){
            var html = '';
            for(s in response.suggestions){
                var sug = response.suggestions[s];
                html += '<li class="li-class"><a href="#">'+sug+'</a></li>';
            }
            if (response.suggestions.length)
                $('#autocomplete').html(html).show();
            else 
                $('#autocomplete').hide();
        });
    });

});

Как я могу ОСТАНОВИТЬ запрос, если нажимается клавиша со стрелкой (код клавиши 40/38)?Я знаю, что это как-то связано с '!'или событие «.not», но мои усилия не окупились.

Ответы [ 3 ]

2 голосов
/ 14 сентября 2011

добавить переменную в: $('#input-field').keyup(function(){ как e

$('#input-field').keyup(function(e){
    if(e.keyCode===38 /*Up key */ || e.keyCode === 40 /*key down */) { return ;}
    // Rest of your code...

Обратите внимание, что вы можете также проверять левую и правую клавиши, но не запрещайте их, но отменяйте вызоввы делаете на «остальной части кода»:

$(function(){

    $('#input-field').keyup(function(e){

        if(!(e.keyCode>=37 && e.keyCode <= 40)) {
            var val = $(this).val();
            jQTubeUtil.suggest(val, function(response){
                var html = '';
                for(s in response.suggestions){
                    var sug = response.suggestions[s];
                    html += '<li class="li-class"><a href="#">'+sug+'</a></li>';
                }
                if (response.suggestions.length)
                    $('#autocomplete').html(html).show();
                else 
                    $('#autocomplete').hide();
            });
        }
    });

});
2 голосов
/ 14 сентября 2011

Попробуйте отменить диапазон клавиш:

$(function(){
    $('#input-field').keyup(function(e){
        if (e.which >= 38 && e.which <= 40)
            e.preventDefault();
    }
}
2 голосов
/ 14 сентября 2011

Вы можете просто вернуть, эффективно остановив выполнение функции, если ключ находится между этими значениями.

$(function(){
    $('#input-field').keyup(function(event){
        if (event.which >= 38 && event.which <= 40)
            return;

        ...
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...