2016-04-14 8 views
0

私は、ユーザーのデータベースを検索するajax関数を持っています。すべてのユーザー名は、jQueryオートコンプリートプリフィルタリング結果 - すべて表示

のように配置されます。

単純に、私はオートコンプリートでこの配列に含まれるものを表示するだけです。どちらか、または検索を完全にオフにするので、結果をもう一度フィルタリングしません。

私のSQLコードでもuseridが検索されます。たとえば「mscott」と入力すると、私のサーブレットはusernames配列に入れられる「Mike Scott」を返します。

「mscott」を入力すると、「Mike Scott」を選択できるようにします。

オートコンプリートで配列を検索しようとしていますが、結果が表示されない「mscott」が表示されていますので、配列内のすべてを表示するだけです。

これは可能ですか?

ありがとうございました。 jQueryのUI APIから

$('#userInput').autocomplete({source: usernames, search: "", minLength: 0}).keyup(function(){ 

var url = "/AJAX/SearchUsers.do?searchQ=mscott"; 
     $.ajax(url, { 
      type: "GET", 
      datatype: "json", 
      success: function(data) { 
      for (var i =0; i < data.length; i++) { 
       usernames.push(data[i].username); 
      } 
     } 
     }); 
    $(this).autocomplete("option", {source: usernames, search: "", minLength: 0}); 

    }); 

答えて

0

ちょうど他の誰かがこの前に考えられていなかったケースを私は私の問題を解決し、それはまだ自分の質問に答える価値が、私は単に見落とし小さな問題でしたけど。

私の問題は、私の結果があらかじめフィルターにかけられていたため、私はusernamesアレイをキーでリセットして、まったく新しい結果セットを表示していました。しかしながら

、以下のコード:変数が再宣言され、元の配列(すなわち、オートコンプリートが使用)に参照がが失われるよう usernames = [];は、現在のアレイをリセットするのに良い方法ではありません。だから私のコンソールは新しい値で私のユーザー名の配列を表示していたが、オートコンプリートは全く新しい値を表示していなかった。

私が使用していたコードの一部を提供していないのに、私は助けを提供してくれてありがとうございます。彼のフィドルは私に多くの事を明らかにする手助けをした。

usernames.length = 0; 

新コード:

$('#userInput').autocomplete({ 
    source: usernames, 
    search: "", 
    minLength: 0 
    }).keyup(function(){ 
    var inputField = $(this); 
    var site = $('#site').val(); 
    var url = "/AJAX/SearchUsers.do?searchQ="+inputField.val()+"&site="+site; 

    if (inputField.val().length > 3){ 
    $.ajax(url, { 
     type: "GET", 
     datatype: "json", 
     success: function(data) { 
     taggedData = data; 
     for (var i =0; i < data.length; i++) { 
      usernames.push(data[i].username); 
     } 
    } 
    }); 
} 
    $(this).autocomplete("search", ""); 
    usernames.length = 0; 
}); 

は、私が使用して配列をクリアすることになりました

0

現在のコード

検索([値])

検索イベントをトリガしたイベント場合、データソースを呼び出し はキャンセルされていません。クリックすると、選択ボックスのようなボタンで の提案を開くことができます。パラメータを指定しないで呼び出すと、現在の入力値の が使用されます。空の文字列で呼び出すことができ、 minLength:0を指定するとすべての項目が表示されます。

これがそうのように実行することができます、あなたの質問に答えるために

$('#userInput').focus(function(){ 
    $(this).autocomplete("search", ""); 
}); 

、はい、方法があります。詳細を参照してください。http://api.jqueryui.com/autocomplete/#method-search

コード例:https://jsfiddle.net/4muo4pf0/

関連する問題