Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何覆盖TwitterTypeahead的onSuggestionMouseEnter_Javascript_Jquery_Twitter_Typeahead - Fatal编程技术网

Javascript 如何覆盖TwitterTypeahead的onSuggestionMouseEnter

Javascript 如何覆盖TwitterTypeahead的onSuggestionMouseEnter,javascript,jquery,twitter,typeahead,Javascript,Jquery,Twitter,Typeahead,我正在使用Twitter Typeahead,在悬停建议时遇到一些问题,这些建议会触发悬停的建议弹出到我的输入字段中。如果用户随后按enter键,将选择实际悬停值,而不是用户编写的值。我想它被选中,只有当用户点击实际的建议。 似乎是 _onSuggestionMouseEnter() 当鼠标悬停建议时激发的函数。我的问题是,是否可以在我自己的代码中重写此函数?还是用另一种方法来解决这个问题 这是我的预打字代码: var suggestions = new Bloodhound({ da

我正在使用Twitter Typeahead,在悬停建议时遇到一些问题,这些建议会触发悬停的建议弹出到我的输入字段中。如果用户随后按enter键,将选择实际悬停值,而不是用户编写的值。我想它被选中,只有当用户点击实际的建议。 似乎是

_onSuggestionMouseEnter()
当鼠标悬停建议时激发的函数。我的问题是,是否可以在我自己的代码中重写此函数?还是用另一种方法来解决这个问题

这是我的预打字代码:

var suggestions = new Bloodhound({
    datumTokenizer: function(d) {
        return Bloodhound.tokenizers.whitespace(d.value);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    limit: 100,
    remote: {
        url: 'url/to/suggestions',
        filter: function(list) {
            return $.map(list.suggestions, function(word) {
                return {s: word.title};
            });
        }
    }
});

suggestions.initialize();
$('.typeahead').typeahead({highlight: true}, {
    source: suggestions.ttAdapter(),
    name: 'suggestions',
    displayKey: 's',
    hint: false
})

为了便于将来参考,我在enter键上添加了一个复选框,如下所示:

$("#search-input").keydown(function (e) {
  if (e.keyCode == 13 && hoverSuggestion) {
    $('.typeahead').typeahead('val', $('.twitter-typeahead pre').text());
    $('#search-input').text($('.twitter-typeahead pre').text())
    $('#search-form').submit();
  }
});
hoverSuggestion = true;
$('.typeahead').typeahead({highlight: true}, {
    source: suggestions.ttAdapter(),
    name: 'suggestions',
    displayKey: 's',
    hint: true
}).on('typeahead:cursorchanged', function(event) {
    hoverSuggestion = false;
});
hoveSuggestion变量用于检查箭头是否已被使用,如果未被使用,则执行建议的清理。它是这样变化的:

$("#search-input").keydown(function (e) {
  if (e.keyCode == 13 && hoverSuggestion) {
    $('.typeahead').typeahead('val', $('.twitter-typeahead pre').text());
    $('#search-input').text($('.twitter-typeahead pre').text())
    $('#search-form').submit();
  }
});
hoverSuggestion = true;
$('.typeahead').typeahead({highlight: true}, {
    source: suggestions.ttAdapter(),
    name: 'suggestions',
    displayKey: 's',
    hint: true
}).on('typeahead:cursorchanged', function(event) {
    hoverSuggestion = false;
});
虽然不是最优雅的解决方案,但它目前仍然有效。欢迎反馈