2017-01-24 78 views
0

我正在使用Select2內置AJAX加載一個小項目列表。 Select2在第一次選擇時加載整個列表(良好),但每次用戶嘗試將其選擇或類型更改爲篩選項時都會重新加載JSON訂閱源(並且這意味着每個鍵入的信件都會有一個新的AJAX請求!)。使Select2只讀取一次數據

A request is being triggered on every key stroke, can I delay this?,我們可以讀到:

默認情況下,每當用戶 改變了他們的搜索詞,選擇二將觸發新的AJAX請求。您可以使用ajax.delay選項設置刪除 請求的時間限制。

$('select').select2({ 
    ajax: { 
     url: '/example/api', 
     delay: 250 
    } 
}); 

這會告訴Select2在將請求發送到您的API之前等待250毫秒。

......但它沒有。認真。我也嘗試過在示例中顯示的未公開的minimumInputLength屬性,但它似乎沒有做任何事情。

甚至有可能讓Select2只讀取一次數據?

+0

我想這個庫只是沒有設計工作的方式。 –

回答

0

它正在爲我工​​作。我使用大的延遲測試了它:delay: 3000 AJAX reqeust確實在最後一次擊鍵後3秒後延遲。 使用退格鍵刪除字符時也可以使用。 我正在使用select2.full.js v4.0.3。希望這可以幫助。

0

讓我知道,如果這個解決方案會爲你工作:

1)一個onchange動作綁定到你選擇的元素:

 <select name="variable" onChange="loadyourlist($('option:selected',this).val());"> 
      <option value="#">Select State</option> 
      <option value="1">State 1</option> 
     </select> 

2)請loadyourlist函數裏面你的要求,但檢查它是否已被稱爲之前:

 window.called = 0; //initial state 

     function loadyourlist(value){ 
      if(!window.called){ //not called before 
       //make your ajax call 
       window.called = 1; //increment to avoid furter calls 
      } 
     }