2012-02-28 37 views
0

我需要有一個用戶在我們的地址數據庫(我在當地政府機構)中選擇他們的地址,大多數情況下我可以獲得他們的地址pin#。過去,我們通過首先選擇街道,方向,然後是門牌號碼來提示地址。這工作,但一如既往,我正在尋找更好的方法。我發現這個名爲Chosen的cool jQuery plugin允許一個人開始輸入,它會自動搜索並在列表中找到一些東西。我想這對於某人尋找他們的地址來說是一個很好的方式,但正如你可以想象的那樣,這個清單非常大,而且只是越來越大。我真的不想將整個列表通過互聯網發送到一個地址。大型選擇列表選項?

我想我需要一個Web服務返回數據,如谷歌即時搜索。約3個字符後,我向他們提供了一個列表。有沒有任何jQuery(或其他類型)的控件可以在您輸入時輪詢Web服務?

回答

4

嘗試jQueryUI autocomplete小部件。聽起來就像它只是你需要的東西。

下面是從網站的介紹:

自動完成,當添加到輸入字段,使用戶能夠快速 查找和值的預填充的列表中選擇對方輸入, 利用搜索和過濾。

通過自動填充字段焦點或輸入內容, 插件開始搜索匹配的條目並顯示可供選擇的值列表 。通過輸入更多字符,用戶可以 篩選列表以更好地匹配。

這可以用來輸入先前選擇的值,例如,你 可以使用的自動完成輸入標籤,來完成一個地址,你 可以輸入城市名稱,並得到郵政編碼,也許從輸入電子郵件 地址地址簿。

您可以從本地和/或遠程數據源提取數據:本地是 非常適用於小型數據集(如用50個條目的地址簿), 遠程是必要的大數據集,就像一個數據庫數百個 或數百萬個條目可供選擇。

自動完成功能可以自定義以使用各種數據源,只需指定源選項即可, 。數據源可以是:

  • 陣列與本地數據
  • 字符串,指定URL
  • 回調

預期數據格式

的從本地數據的數據,一個網址或回調可以進來兩個 變種:

  • 字符串數組:[「Choice1」,「Choice2」]
  • 具有標籤和值屬性的對象數組:[{label:「Choice1」,value:「value1」},...]

標籤屬性顯示在建議菜單中。在用戶從菜單中選擇 之後,將值 插入到輸入元素中。如果只指定了一個屬性,則它將用於 兩者,例如。如果您僅提供值屬性,則該值也將被用作標籤的 。

當使用字符串時,自動填充插件希望該字符串指向一個將返回JSON數據的URL資源,即 。它可以在 相同的主機上或不同的主機上(必須提供JSONP)。自動完成 插件不會過濾結果,而是將請求參數 「term」添加到URL中,服務器端腳本應使用 來過濾結果。數據本身可以採用與上述本地數據相同的格式 。

第三個變體回調提供了最大的靈活性,並且可以使用 將任何數據源連接到自動完成。回調得到 兩個參數:

  • 的請求對象,與所謂的「術語」一個單一的財產,這是指當前值在文本輸入。例如,當 用戶在城市字段中輸入「new yo」時,自動完成詞將 等於「new yo」。
  • 響應回調,它需要一個參數包含要提示給用戶的數據。此數據應根據 提供的術語進行過濾,並且可以採用上述 簡單本地數據(帶標籤/值/均爲 屬性的字符串數組或對象數組)的任何格式進行過濾。提供自定義源回調至 處理請求期間的錯誤非常重要。即使遇到錯誤,您也必須始終致電回覆 回撥。這確保小部件 始終具有正確的狀態。

標籤始終被視爲文本,如果你想在標籤是 視爲HTML可以使用斯科特·岡薩雷斯」 HTML擴展。演示 都集中在源選項的不同變體上 - 查找與您的用例匹配的 ,然後查看代碼。

+0

哦,對不起,我正在看第一條評論。看起來像我在找什麼。 – 2012-02-28 20:49:22