如何在jquery自动完成中绑定keypress事件?

时间:2013-04-27 09:57:32

标签: javascript jquery autocomplete jquery-autocomplete jquery-ui-autocomplete

正如你在http://jsfiddle.net/hn838/4/中看到的那样'click'对于autofiller工作正常,但我想在输入key keypress上触发相同的代码,但它对我不起作用。我的代码在这里。 点击:

$('.ui-autocomplete').on('click', '.ui-menu-item', function(){
    $('.college').trigger('click');
});

Keyprss:

 $('.ui-autocomplete').on('keypress', '.ui-menu-item', function(e){
            if (e.which == 13) {
                         e.preventDefault();
            $('.college').trigger('click');
           }
        });

我希望$('.college').trigger('click');执行click并输入keypress。点击工作正常,但按键不工作。任何线索?

2 个答案:

答案 0 :(得分:6)

您可以向select事件添加一个函数,而不是绑定到关键事件:

select: function(){
    $('.college').trigger('click');
}

这样它只会在用户实际选择自动完成值时触发。

http://jsfiddle.net/louisbros/hn838/10/

答案 1 :(得分:2)

你的小提琴里面没有课ui-autocomplete。所以我认为它看起来像这样:

<input type = 'text' class = 'search ui-autocomplete' />

并且你的小提琴中也没有课ui-menu-item,所以你应该这样做:

$('.ui-autocomplete').on('keypress', function(e){
    if (e.which == 13) {
        e.preventDefault();
        $('.college').trigger('click');
    }
});

<强> Updated Fiddle


如果你想使用从jQuery UI自动生成的类,你可以这样做:

$('.ui-autocomplete-input').on('keypress', function(e){
    if (e.which == 13) {
        e.preventDefault();
        $('.college').trigger('click');
    }
});

<强> Fiddle