Search code examples
javascripttwitter-bootstraptwitter-bootstrap-3typeaheadbootstrap-tags-input

bootstrap: tags in input and typeahead


I am trying to use bootstrap tagsinput in a form contained in a modal like this

...
<div class="form-group">
                            <label for="myTagLabel">Tags:</label> 
                            <input class="form-control" id="myTag"  type="text" data-role="tagsinput">
                        </div>

Also I am trying to use twitter typeahead with the following code

var tagValues = ['ATag','AnotherTag'];

    var tagVals = new Bloodhound({
        datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        local: $.map(tagValues, function(tagValue) { return { value: tagValue }; })
    });

    // kicks off the loading/processing of `local` and `prefetch`
    tagVals.initialize();

    $('#myTag').tagsinput({
        typeaheadjs: {
            name: 'tagVals',
            displayKey: 'value',
            valueKey: 'value',
            source: tagVals.ttAdapter()
        }
    });

you can see in the image above what is the result. In this case the problem is that typeahead suggestions are not contained in the frame with rounded corners

enter image description here


Solution

  • Ripping the CSS from the page; here is the needed CSS that will place suggestions inside of a box. There is much more CSS in the page; but it will override a lot of bootstrap.

        /* CSS for typeahead */
    .tt-query {
      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
         -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
              box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    }
    
    .tt-hint {
      color: #999
    }
    
    .tt-dropdown-menu {
      width: auto;
      margin-top: 12px;
      padding: 8px 0;
      background-color: #fff;
      border: 1px solid #ccc;
      border: 1px solid rgba(0, 0, 0, 0.2);
      -webkit-border-radius: 8px;
         -moz-border-radius: 8px;
              border-radius: 8px;
      -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
         -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
              box-shadow: 0 5px 10px rgba(0,0,0,.2);
    }
    
    .tt-suggestion {
      padding: 3px 20px;
      font-size: 16px;
      line-height: 24px;
    }
    
    .tt-suggestion.tt-cursor {
      color: #fff;
      background-color: #CECBCB;
    
    }