1

  サーバー側から提案を取得するために Ajax を使用するアプリケーションの Bootstrap で typeahead を使用しています。
  以下を除いてすべて問題ありません: 正しい入力を書いているのに、'The Walking Dead' のような提案が表示されます.walkkkk のように間違った入力を入力し始めると、ESC キーを押さない限り提案が表示されたままになります. .
ここに画像の説明を入力
  サーバー側を確認しましたが、間違った入力を入力し始めると、サーバーは何も返しません。
  提案を自動的に非表示にするにはどうすればよいですか?

相対jsコードは次のとおりです。

$('#query').typeahead({
    source: function(query, process){
        suggestions = {};
        labels = [];
        $.post('suggest.do', {query: query, limit: '10'}, function(data){
            var sugg = jQuery.parseJSON(data).data;

            if(sugg == 'NOTHING' || sugg == 'ERROR'){
                return;
            }
            $.each(sugg, function(index, item){
                suggestions[item.name] = item;
                labels.push(item.name);
            });
            return process(labels);
        });
    },
    items: 10,
    minLength: 1,
    updater: function(item){
        //irrelative code
    },
    matcher: function(item){
        return true;
    },
    highlighter: function(item){
        var ent = suggestions[item];
        var html = '' +
                    '<div class="entity-block">' +
                    '<span class="label label-important">' + ent.type + '</span>&nbsp;' + 
                    '<span class="sugg-name">' + ent.name + '</span>' +
                    '</div>';
        return html;
    }
});
4

1 に答える 1

0
source: function(query, process){
    suggestions = {};
    labels = [];
    $.post('suggest.do', {query: query, limit: '10'}, function(data){

        //Check if any data is returned, if not clear the text and exit the func
        if(!data || data.length == 0){
           $('#query').val("");
           return;
        }

        var sugg = jQuery.parseJSON(data).data;

        if(sugg == 'NOTHING' || sugg == 'ERROR'){
            return;
        }
        $.each(sugg, function(index, item){
            suggestions[item.name] = item;
            labels.push(item.name);
        });
        return process(labels);
    });
},
于 2013-04-16T08:55:30.530 に答える