我使用Twitter typeahead(使用Bloodhound引擎)实现了自动完成function,并且运行正常。 我的下一步是使用生成/获得的数据(在我的情况下’name’和’id’)进行搜索操作。 这就是我遇到困难的地方。关于如何将数据传递给控制器以进行搜索操作,我完全空白。 我没有使用表单,但我想使用搜索按钮单击或js函数OnclickSearchButton或可能有更好的方法?! 我的JS代码: $(document).ready(function () { var viewModel = {}; //will store id and string to pass for the search operation //var urlRoot = ‘/Test/GetName’; //we get url to the controller and min. char to invoke search from the html helper JavaScriptParameter var urlRoot = urlToController; //var lengthMin = 1; var lengthMin […]
这是我的代码: tagsProcessor(){ const suggestions = [{value: ‘string1’}, {value: ‘string2’}, {value: ‘string3’}, {value: ‘string4’}, {value: ‘string5’}] var bloodhoundSuggestions = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace(‘value’), queryTokenizer: Bloodhound.tokenizers.whitespace, sufficient: 3, local: suggestions, remote: { url: ‘http://localhost:3001/api/suggestions’, } }); const $tagsInput = $(‘#tagsInput’) $tagsInput.typeahead({ hint: true, highlight: true, minLength: 1 }, { name: ‘suggestions’, displayKey: ‘value’, source: bloodhoundSuggestions }); } […]
我正试图让Twitter Typeahead + Bloodhound与Google的CSE合作。 到目前为止,我已经设法返回结果,但我无法计算出datumTokenizer。 var results = new Bloodhound({ datumTokenizer: function(data) { return Bloodhound.tokenizers.whitespace(d.value) }, queryTokenizer: Bloodhound.tokenizers.obj.whitespace, remote: { url: “http://clients1.google.com/complete/search?client=partner&hl=en&sugexp=gsnos%2Cn%3D13&gs_rn=25&gs_ri=partner&partnerid=004914516364918182382%3Ayfqw09r4qvu&types=t&ds=cse&cp=3&gs_id=15&q=%QUERY&callback=showResults&duffCallback=?”, ajax: $.ajax({type:’GET’,dataType:’jsonp’,jsonp:’duffCallback’}), filter: showResults } }); 看小提琴: http : //jsfiddle.net/thugsb/3KAjh/ 你会看到我从showResults()返回的结果是一个数组。 但是,从filter:调用showResults()似乎没有做任何事情,因为删除该行没有任何效果。 所以我不太确定发生了什么。 请注意,duffCallback是我在阅读这个问题时要做的。 如果有更好的方法来完成这项工作我就全都耳朵!
我正在尝试干掉一些JQuery代码,该代码初始化了一个使用带有远程数据源的Bloodhound建议引擎的typeahead.js插件。 这是到目前为止的代码: var locsData = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace(“name”), queryTokenizer: Bloodhound.tokenizers.whitespace, remote: { url: “/locations/search.json?q=%QUERY”, ajax: { beforeSend: function(xhr, settings) { $(“#typeahead1”).addClass(‘loading-text’); }, complete: function(xhr, status) { $(“#typeahead1”).removeClass(‘loading-text’); } } }, limit: 100 }); locsData.initialize(); $(“#typeahead1”).typeahead({ minLength: 3 }, { name: “locs”, displayKey: “name”, source: locsData.ttAdapter() }); 我试图将这段代码概括为一堆不同的文本字段; 这应该不是问题:我可以使用$(“.myClass”).typeahead({ … })并且将为所有这些控件初始化插件。 我面临的问题是使用Bloodhound配置中的ajax回调函数( beforeSend , complete等):我正在为这些函数中的文本字段切换“loading.gif”类,我需要该代码来获取对调用对象的引用。 […]
我正在使用带有血腥建议引擎的Typeahead.js,并希望在用户点击搜索框后立即显示该列表。 我发现这个stackoverflow问题( Twitter TypeAhead以编程方式显示所有结果 )与我相同,答案指向解决问题的jsfiddle: http : //jsfiddle.net/5xxYq/ 大。 然而,似乎只有在不使用猎犬作为先行者的来源时才能工作。 例如,我分叉了他们的工作示例并将类型来源切换为使用猎犬: http : //jsfiddle.net/5xxYq/31/ 。 建议引擎工作正常(当我键入jo列表出现时),但是点击上显示建议的小黑客似乎不再起作用了。 关于如何制作建议列表的任何想法出现在点击血腥? 谢谢!
无法获得Twitter Typeahead.js,远程版本可以使用。 我的建议得到“未定义”。 任何帮助,将不胜感激。 代码如下: JS: var films = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace(‘value’), queryTokenizer: Bloodhound.tokenizers.whitespace, remote: ‘../widgets/films.json’ }); films.initialize(); $(‘#films .typeahead’).typeahead(null, { name: ‘films’, displayKey: ‘value’, source: films.ttAdapter() });
请参阅下面的示例。 JSFiddle: http : //jsfiddle.net/R7UvH/2/ 如何让typeahead.js (0.10.1)在多个属性值中搜索匹配项? 理想情况下,在整个data ( data.title , data.desc和所有data.category[i].name ) datumTokenizer: function(data) { // **search in other property values; eg data.title & data.desc etc..** return Bloodhound.tokenizers.whitespace(data.title); }, 整个例子: var data = [{ title: “some title here”, desc: “some option here”, category: [{ name: “category 1”, }, { name: “categoy 2”, }] }, […]
我正在使用typeahaead.js实现typeahead搜索,但是作为typeahead搜索框中的类型,在建议下拉列表中每个记录都会出现两次。我检查了数据源(即POST api调用),它只有唯一的记录。我在哪里做错了?帮助或相关链接。 即便控制也不会重复检测器。 这里讨论了类似的问题,但没有解决方案。 var result = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace(‘value’), queryTokenizer: Bloodhound.tokenizers.whitespace, remote: { url: ‘https://api1.com/idocs/api’, wildcard: ‘%QUERY’, rateLimitWait: 300 , transport: function (opts, onSuccess, onError) { var url = opts.url; $.ajax({ url: url, type: “POST”, success: onSuccess, error: onError, }); }, filter: function (data) { if (data) { return $.map(data, function (object) { […]
我的前端有一个TypeAhead / Bloodhound实现,它从Play / Scala服务器获取JSON数据。 Typeahead-version是0.11.1。 实施如下: HTML: JavaScript的: var engine = new Bloodhound({ datumTokenizer: function (datum) { var fullName = fullName(datum); return Bloodhound.tokenizers.whitespace(fullName); }, queryTokenizer: Bloodhound.tokenizers.whitespace, identify: function(obj) { return obj.id; }, remote: { url: routes.controllers.Users.index(“”).url, cache: false, replace: function (url, query) { if (!isEmpty(query)) { url += encodeURIComponent(query); } return url; }, filter: […]
如果使用Bloodhound和GET: // Typeahead personsBloodhound = new Bloodhound({ datumTokenizer: function (person) { return person.name; }, queryTokenizer: Bloodhound.tokenizers.whitespace, remote: { url: ‘/ajax/Persons/List?nameContains=%QUERY’, ajax: { beforeSend: function(xhr) { $(“.searching-person”).show(); }, data: { “pageSize”: 4, “otherParam1”: “blah”, “otherParam2”: “bleh”, } }, filter: function (response) { $(“.searching-person”).hide(); return response.persons; } } }); 一个只是在URL中使用%QUERY。 现在…. 如果使用Bloodhound和POST,我应该使用什么而不是%QUERY? // Typeahead personsBloodhound = new […]