我使用
this fork of the Twitter Bootstrap typeahead library,它允许异步数据源以及选择事件.到目前为止,它对我来说很好,但是当用户选择了外部字段(即不主动选择下拉条目)时,onselect事件被触发(在我的情况下,将用户重定向到另一个页面).如果用户没有点击,有什么办法可以阻止onselect事件被触发?这是我到目前为止(在CoffeeScript中):
$(document).ready -> $('#inspection_name').typeahead( source: (typeahead,query) -> $.ajax( url: "/inspections/search.json?name="+query success: (data) => return_list = [] $(data.results.inspections).each -> return_list.push("<span data-url='" + this.uri + "/edit'>" + this.name + "," + this.town + "</span>") typeahead.process(return_list) ) onselect: (obj) => window.location.href = $(obj).attr("data-url") )
解决方法
对于默认Bootstrap,这将工作:
$.fn.typeahead.Constructor.prototype.render = function (items) { var that = this; items = $(items).map(function (i,item) { i = $(that.options.item).attr('data-value',item); i.find('a').html(that.Highlighter(item)); return i[0]; }); this.$menu.html(items); return this; };
包括引导之后的某个地方(分钟)js