如何取消Jquery中的箭头键



我有这个代码,它是为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',但我的努力没有得到回报。

如果键在这些值之间,您可以简单地返回,有效地停止函数执行。

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

在:$('#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();
            });
        }
    });
});

尝试取消一系列密钥:

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

最新更新