Typeahead.js - Unable to choose suggestion

前端 未结 2 1145
一个人的身影
一个人的身影 2021-01-15 06:31

I must be an idiot. I am using the Typeahead.js plugin. I am trying to use custom templates for suggestions. While my custom templates appear, I cannot use the arrow-keys to

2条回答
  •  误落风尘
    2021-01-15 06:54

    Try

    $(function () {
    
        var suggestions = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            remote: {
              url: '/api/suggests?querytext=%QUERY',
              filter: function(results) {
                return $.map(results.Results, function(suggestion) {
                  return {value:suggestion.Name, suggest:suggestion};
              });
            }
        });
        suggestions.initialize();
    
    
        $("#bloodhound .typeahead").typeahead({
            minLength: 3,
            hint: true,
            highlight: true
        }, {
            name: 'suggestions',
            displayKey: 'value',
            templates: {
              suggestion: function(data) {
                var str = '';
                if (data.suggest.Type === 'Customer') {
                  str += '' + data.suggest.Type + '';
                } else if (data.suggest.Type === 'Product') {
                  str += '' + data.suggest.Type + '';
                }
                str += '
    ' + data.value + '
    '; return str; } }, source: suggestions.ttAdapter() }); })

    $(function () {
    
        var data = {
      "Results":[
        {
          "Type":"Customer",
          "Id":5,
          "Name":"Bill",
          "LastUpdated":"01-01-2015"
        },
        {
          "Type":"Customer",
          "Id":135,
          "Name":"Billows",
          "LastUpdated":"01-02-2015",
        },
        {
          "Type":"Product",
          "Id":241,
          "Name":"Bill Check",
          "LastUpdate":"01-04-2015"
        }
      ],
      "TotalResults":3,
      "TotalCustomers":2,
      "TotalProducts":1
    };
    
        var suggestions = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            local: $.map(data.Results, function(d) {
                return {value:d.Name, suggest:d}
            })
        });
        suggestions.initialize();
    
    
        $("#bloodhound .typeahead").typeahead({
            minLength: 3,
            hint: true,
            highlight: true
        }, {
            name: 'suggestions',
            displayKey: 'value',
              templates: {
        suggestion: function(data) {
              var str = '';
              if (data.suggest.Type === 'Customer') {
                str += ''+data.suggest.Type+'';
              } else if (data.suggest.Type === 'Product') {
                str += ''+data.suggest.Type+'';
              }
              str += '
    ' + data.value + '
    '; return str; } }, source: suggestions.ttAdapter() }); })
    @font-face {
        font-family:"Prociono";
        src: url("../font/Prociono-Regular-webfont.ttf");
    }
    html {
        overflow-y: scroll;
    }
    .container {
        margin: 0 auto;
        max-width: 750px;
        text-align: center;
    }
    .tt-dropdown-menu, .gist {
        text-align: left;
    }
    html {
        color: #333333;
        font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;
        font-size: 18px;
        line-height: 1.2;
    }
    .title, .example-name {
        font-family: Prociono;
    }
    p {
        margin: 0 0 10px;
    }
    .title {
        font-size: 64px;
        margin: 20px 0 0;
    }
    .example {
        padding: 30px 0;
    }
    .example-name {
        font-size: 32px;
        margin: 20px 0;
    }
    .demo {
        margin: 50px 0;
        position: relative;
    }
    .typeahead, .tt-query, .tt-hint {
        border: 2px solid #CCCCCC;
        border-radius: 8px 8px 8px 8px;
        font-size: 24px;
        height: 30px;
        line-height: 30px;
        outline: medium none;
        padding: 8px 12px;
        width: 396px;
    }
    .typeahead {
        background-color: #FFFFFF;
    }
    .typeahead:focus {
        border: 2px solid #0097CF;
    }
    .tt-query {
        box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
    }
    .tt-hint {
        color: #999999;
    }
    .tt-dropdown-menu {
        background-color: #FFFFFF;
        border: 1px solid rgba(0, 0, 0, 0.2);
        border-radius: 8px 8px 8px 8px;
        box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
        margin-top: 12px;
        padding: 8px 0;
        width: 422px;
    }
    .tt-suggestion {
        font-size: 18px;
        line-height: 24px;
        padding: 3px 20px;
    }
    .tt-suggestion.tt-cursor {
        background-color: #0097CF;
        color: #FFFFFF;
    }
    .tt-suggestion p {
        margin: 0;
    }
    .gist {
        font-size: 14px;
    }
    .example-twitter-oss .tt-suggestion {
        padding: 8px 20px;
    }
    .example-twitter-oss .tt-suggestion + .tt-suggestion {
        border-top: 1px solid #CCCCCC;
    }
    .example-twitter-oss .repo-language {
        float: right;
        font-style: italic;
    }
    .example-twitter-oss .repo-name {
        font-weight: bold;
    }
    .example-twitter-oss .repo-description {
        font-size: 14px;
    }
    .example-sports .league-name {
        border-bottom: 1px solid #CCCCCC;
        margin: 0 20px 5px;
        padding: 3px 0;
    }
    .example-arabic .tt-dropdown-menu {
        text-align: right;
    }
    
    [class|=icon] {
        color:orange;    
    }
    
    
    
    

提交回复
热议问题