如何在Jquery中取消箭头键

时间:2011-09-13 20:29:30

标签: jquery keyboard

我有此代码适用于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 个答案:

答案 0 :(得分:2)

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

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

        ...
    });
});

答案 1 :(得分:2)

$('#input-field').keyup(function(){ <{1}}中添加变量,例如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 :(得分:2)

尝试此操作取消一系列键:

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