2016-11-07 20 views
0

こんにちは、私はjQuery UIのオートコンプリートを使用しています。このようなことをしたいです:長さ= 3のときにAJAXでリストを取得したいのですが、この作業は素晴らしいです。次に、AJAXから返されたリストを使用してそれをフィルタリングするために、長さが3より大きい場合に必要です。しかし、それはフィルタリングされていない同じリストを与える。jquery UIストアドリストでオートコンプリート

$(".selector").autocomplete({ 
      source:function(request, response) { 
       var str_req = request.term; 
       if(str_req.length==3) { 
        $.ajax({ 
         url: "/?search=1", 
         type: "GET", 
         dataType: "json", 
         data: {term: request.term}, 
         success: function (data) { 
          auto_data=data; 
          response(data); 
         } 
        }); 
       } else{ 
        return response(auto_data); 
       } 
      }, 
      minLength: 3, 
      select: function(event, ui) { 
       console.log("Selected: " + ui.item.value + " aka " + ui.item.id); 
      } 
     }); 

答えて

0

私は単にmin 1に設定し、sourceの比較を行うだろう。

$(".selector").autocomplete({ 
    source:function(request, response) { 
    var str_req = request.term; 
    if(str_req.length < 3) { 
     // Send your list back, if it was stored in 'myData' 
     response(myData); 
    } elseif(str_req.length==3) { 
     $.ajax({ 
      url: "/?search=1", 
      type: "GET", 
      dataType: "json", 
      data: {term: str_req}, 
      success: function (data) { 
      auto_data=data; 
      response(data); 
      } 
     }); 
     } else{ 
     response(auto_data); 
     } 
    } 
    }, 
    minLength: 1, 
    select: function(event, ui) { 
    console.log("Selected: " + ui.item.value + " aka " + ui.item.id); 
    } 
}); 
ます。また、スイッチ文としてこれを行うことが

var str_req = request.term; 
switch(true){ 
    case str_req.length < 3: 
    // Send your list 
    break; 
    case str_req.length == 3: 
    // Perform AJAX & return results 
    break; 
    default: 
    // All other options 
    response(auto_data); 
} 
関連する問題