在标准Twitter TypeAhead中我有以下行为:
当用户开始输入时,会弹出建议,当他点击进入时,他被重定向到详细搜索页面,其中输入的文本用作url参数?query = [text]。这是预期的和Ok。
当用户在点击输入之前将鼠标放在建议上时,它会自动将此建议的标题放入tt-query-input(不可见)中,当点击enter时,搜索查询是建议的标题而不是他输入的内容。 我该如何避免这种行为?
我在点击输入时添加了此代码以重定向(其中txtQuery是我添加到with class' typeahead tt-query中的id:
$('#txtQuery').bind("enterKey", function (e) {
var url = '/?query=' + $('#txtQuery').val();
window.location.href = url;
});
$('#txtQuery').keyup(function (e) {
if (e.keyCode == 13) {
$(this).trigger("enterKey");
}
});
答案 0 :(得分:1)
显然,当您将鼠标悬停在建议上时会发生意外情况。无论出于何种原因,悬停将改变输入DOM中的值。您可以尝试阻止对事件执行的操作,如下所示:
$('.twitter-typeahead').on('mouseover', '.tt-suggestion', function(event){
event.preventDefault();
// verify input
console.log($('#txtQuery').val());
});
编辑:
以同样的方式,您可以从“.tt-suggestion”项目中“取消绑定”keydown事件,以防止enter
选择和提交。
HTH