2012-10-29 34 views
2

考慮用戶必須從數千值的列表中選擇多個值的情況。我得到爲可用工具最接近的是http://quasipartikel.at/multiselect/jQuery的多選對於非常大量的選項

的主要問題是由於大量的數據,用戶從該有選擇。 ,我目前使用的方法是,用戶在文本框中輸入第一個字符,然後與第一個字符開始,應顯示多個選擇的所有值。(因此濾波值的一個相當大的列表)

問題是,即使這樣,值的數量如此之大,以至於重新加載多選選項需要5-15秒。但是一旦加載了這些值,javascript過濾就會處理剩餘的內容,因爲用戶輸入的是成功的字符。

上的任何其它方式來處理這種情況任何建議????

+0

使用混合來源我認爲張貼一些(HTML,JavaScript的/ jQuery的)代碼與您的情況一起幫助我們排除故障。 – JoeFletch

回答

0

下面分別有所幫助:

首先,濾波器的值基於某些輸入參數,選擇最終的大尺寸輸入之前。 其次,選擇值被加載jquery的前從一個字符增加限制到多個。這應該進一步限制數值的數量,但用戶必須知道多字符輸入限制

http://quasipartikel.at/multiselect/仍然感覺最好的可用選項。

1

而不是使用預先填充的多選框使用jQueryUI Autocomplete來過濾列表服務器端並只返回匹配到客戶端(類似於標籤選擇在StackOverflow上工作的方式)。

這裏有http://jqueryui.com/autocomplete/#multiple-remote

選擇多個值,則可以保存選擇的結果,你會處理多選同樣的方式的一個很好的例子。

要實現一種混合的方法,其中的第一個字母取從服務器方面的,然後再把從這些結果的過濾器,你可以使用下面的(請注意,這是完全未經測試):

一個全局變量添加到握住你的結果

var results_cache = []; 

autocomplete

source: function(request, response) { 
    // get the first letter of your search term 
    var letter = request.term.substring(0,1); 
    // check to see if we already have results for this letter 
    if (!results_cache[letter]){ 
     // no results, fetch via AJAX 
     $.getJSON("search.php", { term: request.term }, 
      function(data){ 
       // cache results 
       results_cache[letter] = data; 
       // filter results (in case we have more than just 1 character in the term) 
       response($.ui.autocomplete.filter(data, request.term)); 
      } 
     ); 
    } else { 
     // we already have data for this letter, just filter the results from the cache 
     response($.ui.autocomplete.filter(results_cache[letter], request.term)); 
    } 
}, 
search: function() { 
    // make sure we have at least 1 character for the term 
    if (!this.value) return; 
    var term = this.value; 
}, 
+0

你確定jQueryUI自動完成過濾服務器端?是什麼讓你相信? – dougmacklin

+0

@DougieBear我打算使用一個AJAX'source:'加載你的數據,然後可以過濾服務器端。過去我已經實施了這個。 – doublesharp

+0

好吧,我剛剛檢查,還有一個多值選擇自動完成選項。非常酷,但不是前面提到的多選選項,只需輸入一個字母就可以得到預先填充的列表,然後只需單擊一下就可以從結果中添加多個值比單獨輸入每一個。它會更快。 – kapil