如何在点击时触发jQuery行为或在typeahead.js搜索结果上按Enter键?

时间:2013-12-29 10:28:22

标签: jquery onclick keypress typeahead.js

我有一个自动填充搜索字段(typeahead.js),点击搜索建议即on click时触发了一个行为。

我希望在向下箭头并按下输入建议时触发相同的行为。

所以我希望行为发生on clickon pressing enter

在下面的示例中,我使用输入字段而不是复制完整的typeahead.js搜索方案。

以下代码的问题在于,只有在输入字段中按Enter键时才触发(因为条件附加到e)而不是on click

HTML

<input class="hello" value="hello">

的jQuery

$(document).on("click keypress",".hello", function (e) {
if (e.which == 13) {
alert($(this).val());
}
});

的jsfiddle

http://jsfiddle.net/rwone/9xhK3/

修改

使用typeahead代码更新了jsFiddle:

http://jsfiddle.net/rwone/9xhK3/10/

2 个答案:

答案 0 :(得分:2)

我想你需要找到事件类型并且只需要or

$(document).on("click keypress",".hello", function (e) {
    if(e.which == 13 || e.type == "click") {
       alert($(this).val());
    }
});

答案 1 :(得分:0)

<强>解决方案

看到这篇文章后:

https://stackoverflow.com/a/18710896/1063287

此代码:

http://codepen.io/Sinetheta/pen/eAwcl

和这个资源:

https://github.com/twitter/typeahead.js/issues/300

function searchFunction() {
$('.my_class .typeahead').typeahead({                              
name: 'my_name',
valueKey: 'my_key',  
prefetch: 'path/to/json.json',
template: [
'<p class="key1">[[key_1]]</p>',
'<p class="my_key">[[my_key]]</p>',
'<p class="key3">[[key_3]]</p>'
].join(''),
engine: Hogan  
}).on('typeahead:selected', function(event, selection) {
var my_key = selection.my_key;
alert(my_key);
});
}