2016-10-13 83 views
0

我使用Select2作爲自動建議。這意味着,我通過ajax從遠程源獲取選項。這工作完美。jQuery Select2與遠程數據加載:顯示選項,而不是佔位符

現在,客戶希望在開始鍵入之前加載所有選項。這種做法違背了汽車建議的目的,但如果他想這樣做,他應該擁有它。

無論如何,我需要在用戶開始輸入之前顯示前50或100個元素,而在第三個輸入字符後,Select2輸入應該再次獲取選項。

我試着用選項值(例如「aa」,「bb」和「cc」)預填充select,但它只顯示佔位符。只要用戶點擊選擇,是否可以發送請求?這也是一種可能性,因爲遠程來源可以發回前50個結果。如果任何人都可以引導我在正確的方向,我將感謝:)

+0

我從來沒有用過,但選擇二我剛剛閱讀文檔,我會試試這個:1 - 定義選擇作爲陣列的前50或100元素。 [見這裏](https://select2.github.io/examples.html#data-array)2 - 使用minimumInputLength的遠程選項重新定義onkeydow/up事件的選擇:3.希望它有幫助。 –

+0

感謝評論@Elmer Dantas,這實際上可以在某種程度上起作用。看起來使用另一個自動完成腳本的麻煩並不多:) – itd

回答

0

一個快速的解決方法,如果任何人都會有相同的問題:

  1. 設置「minimumInputLength」 0這樣的請求將在用戶打開Select2輸入元素後立即發送。搜索參數當然是一個空字符串。

  2. 在「processResults」函數中添加一個允許分頁的邏輯。返回的對象需要一個名爲「loadMore」的布爾成員的「pagination」屬性。你可以在這裏閱讀更多關於這個:https://stackoverflow.com/a/29022107/430997 這樣你才啓用無限滾動。當然,您也需要支持服務器端的分頁結果。

  3. (可選)您可以從不同位置獲取源代碼。 ajax選項的「url」參數可以是一個函數。如果要根據字符數調用不同的端點(主要是檢查字符數是否爲0),則可以在url函數內檢查它並返回適當的端點。

這只是一種解決方法,只能模擬初始值。如果任何人有一個真正回答我的問題,請發表吧:)