11

Fiddle herejQuery的自動完成變更源

我需要availabletags1源,如果如果選擇選擇2單選按鈕,它的選擇選擇1單選按鈕和availabletags2。 而且我需要通過實際用戶選擇動態更改此設置。

CODE:

var availableTags1 = [ 
"ActionScript", 
"AppleScript", 
"Asp" 
]; 

var availableTags2 = [ 
"Python", 
"Ruby", 
"Scala", 
"Scheme" 
]; 

$("#autocomplete").autocomplete({ 
source: availableTags1 
}); 

$('input[name="choice"]').click(function(){ 
if(this.checked){ 
    if(this.value == "1"){ 
     $("#autocomplete").autocomplete('option', 'source', availableTags1) 
    } else { 
     $("#autocomplete").autocomplete('option', 'source', availableTags2) 
    } 
+0

是'availabletags1'和'availabletags2'陣列 –

+0

也有什麼'選擇1'和'choice2' –

+0

Sry基因,我張貼的jsfiddle錯誤的鏈接,現在應該沒問題。 –

回答

24

嘗試

$('input[name="choice"]').click(function(){ 
    if(this.checked){ 
     if(this.value == "1"){ 
      $("#autocomplete").autocomplete('option', 'source', availableTags1) 
     } else { 
      $("#autocomplete").autocomplete('option', 'source', availableTags2) 
     } 
    } 
}) 

演示:Fiddle

+0

太棒了,它的工作原理。現在我只需要將你的解決方案與這個[http://jsfiddle.net/7RL4p/11/](http://jsfiddle.net/7RL4p/11/)合併,我仍然無法工作。 –

+1

@LudvikCtrnacty見http://jsfiddle.net/arunpjohny/H9dUD/1/ –

+0

令人驚歎的,謝謝。你知道如何通過「鍵入字母」添加搜索 - 我的意思是 - 如果用戶現在鍵入「c」(來自availableTags1) - 它顯示javascript,但我不想顯示任何內容,因爲沒有任何內容以c開頭。等(如果用戶類型(從availableTags1)Sc - 它應該顯示Scala,Scheme;如果Sca - 現在只有Scala)。我希望我寫得可以理解。還有 - 以某種方式設置最大數量的顯示值?謝謝 –

11

對於任何人在2016年讀這篇文章以後,存在使用request/response模式更好的方法。 jQuery自動完成有一個source選項,它接受一個函數,該函數在插件調用時會接收兩個參數:requestresponserequest是一個包含有關自動完成組件的信息的對象,即request.term,它是輸入字段的值。 response是一個函數,接受單個參數,返回的數據爲response(data)。正如你可以在下面的例子中看到的那樣,你可以使用這個選項來實現ajax請求。您可以簡單地將request函數作爲成功回調函數傳遞給jQuery $.ajax方法,它將按預期工作。你也可以使用這種模式來做其他很酷的事情,比如在內存中搜索是否已經獲取並緩存了一些數據,從而使後續搜索更加實時。

$('#term-search').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: $('#api-endpoint').val(),//whether you are using radios, checkboxes, or selects, you can change the endpoint at runtime automatically 
      dataType: "json", 
      data: { 
       query : request.term,//the value of the input is here 
       language : $('#lang-type').val(), //you can even add extra parameters 
       token : $('#csrf_token').val() 
      }, 
      success: response //response is a callable accepting data parameter. no reason to wrap in anonymous function. 
     }); 
    }, 
    minLength: 1, 
    cacheLength: 0, 
    select: function(event, ui) {} //do something with the selected option. refer to jquery ui autocomplete docs for more info 
});