2011-12-05 65 views
3

我在我的網站上使用jqueryUI自動填充小部件。說我有我的數據庫中的下列項目...過濾jqueryUI自動填充選項

  • 蘋果
  • 亞伯拉罕
  • 土豚

當我鍵入「A」中的自動完成構件我得到列表下方我的輸入字段。我已經編寫了額外的代碼,當您選擇一個項目時,它會被添加到輸入字段下方的UL中,並且輸入字段將被清除。

因此,您鍵入「a」,您會看到該列表,然後選擇蘋果。在輸入字段之下,蘋果現在是UL中的LI。您現在再次輸入「a」,然後再次看到列表...這是我的問題。

這第二次我想顯示除蘋果之外的所有東西。

我很想知道如何在兩個不同的地方這樣做:

1 - 我很想知道如何攔截觸發一個GET查詢到服務器的情況下,這樣,而不是發送當你鍵入「a」時,「q = a」可以讓服務器發送「q = a & exclude = apple,foo,bar」。然後我過濾列表服務器端,一切都很好。

2 - 我也很想知道如何攔截構建選項列表的事件。這樣,我可以看到它將顯示「蘋果,猿等」選項,並且我可以從該列表中刪除「蘋果」。

我看到文檔中的事件 - 但我不知道如何使用它們來實現上述目標。

謝謝!

回答

2

您可以通過爲自動填充小部件的source選項定義一個函數來完成上述兩項操作。從那裏開始,您可以使用$.ajax自己執行AJAX請求。喜歡的東西:

$("input").autocomplete({ 
    source: function (request, response) { 
     var exclude = /* build excluded items list. */; 
     var term = request.term; 

     $.ajax({ 
      url: "server.php", 
      data: { q: term, exclude: exclude }, 
      dataType: "json", 
      success: function(data) { 
       /* Here, you could accomplish #2 by filtering items out of data */ 
       /* You must call the supplied callback to let the widget know what to suggest */ 
       response(data); 
      } 
     }); 

    } 
}); 

我可以想象你會建造排除的項目只需在ul已提取的項目。

+0

奇妙 - 非常感謝。 – chrispitzer

相關問題