I use twitter typeahead to show suggestions for categories that are great for me. The problem is displaying subcategories. If a category has sub-categories then expand/collapse icon displayed along with the sentence, if the user selects one of them, subcategories should be shown below it, I succeeded in displaying, but cannot update the dataset type headhead, so when the user selects one, it should be displayed at the input. Please use keyboard on Jsfiddle because i have tried only in keypress . Below is my json array
JSFIDDLE here
[{ "id": "38", "value": "Entertaintment", "parent_id": "27", "children": "1", "childCategories": [{ "id": "28", "value": "Movies", "parent_id": "38" }, { "id": "29", "value": "Sports", "parent_id": "38" }] }, { "id": "40", "value": "eeen", "parent_id": "27", "children": "1", "childCategories": [{ "id": "41", "value": "een child 1", "parent_id": "40" }] }, { "id": "41", "value": "een child 1", "parent_id": "40", "children": "0", "childCategories": false }]
I tried the following:
_onEnterKeyed: function onEnterKeyed(type, $e) { var cursorDatum, topSuggestionDatum; cursorDatum = this.dropdown.getDatumForCursor(); topSuggestionDatum = this.dropdown.getDatumForTopSuggestion(); //My custom condition, if category has children show sub-categories below if (cursorDatum.raw && cursorDatum.raw.children == "1") { //below line is my failed try //this.dropdown.updateChild('',cursorDatum.raw.childCategories,false); var that = this, onSuggestionClick, onSuggestionMouseEnter, onSuggestionMouseLeave; var childHTML=''; $('.ttchild').remove(); //adding the sub-categories to dropdown $.each(cursorDatum.raw.childCategories,function(i,v){ childHTML += '<div class="tt-suggestion ttchild"><div class="suggestions"><span>'+this.value+'</span></div></div>'; }); $(childHTML).insertAfter('.tt-cursor'); return; } if (cursorDatum) { this._select(cursorDatum); $e.preventDefault(); } else if (this.autoselect && topSuggestionDatum) { this._select(topSuggestionDatum); $e.preventDefault(); } }, //This is my custom function trying to update the dataset, but i know its totally wrong. updateChild: function updateChild(query,childs) { var that = this; this.query = query; this.canceled = false; this.source(query, render); function render(childs) { if (!that.canceled && query === that.query) { that._render(query, childs); } } },
JSFIDDLE here
For example: the entertainment category has subcategories films and sports.
Hope someone helps me ....