2010-05-06 20 views
1

我使用喬恩Zaefferer的自動完成查詢插件,http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/jQuery自動完成插件(Jorn Zaefferer's) - 如何動態更改顯示值列表?

我有設置選項,以便它顯示了所有的值,當你在空白文本字段中單擊,有點像選擇,選項也設置使用戶只能從自動完成所使用的值列表中進行選擇(所以它有點像選擇,但具有自動完成功能)。

我在文本字段下面有兩個單選按鈕,它們確定用戶是從長列表還是短列表中選擇可能的值。我想要在單擊其中一個單選按鈕時更新自動填充中使用的值。目前,我以非常聰明的方式通過在同一文本字段上使用不同的值數組再次調用自動完成功能來實現此目的,但這會創建一種情況,即同時激活這兩種情況,並且我可以看到長列表正在窺探從短名單後面。

什麼,我需要做的是要麼 一)動態更改自動完成或 用於B值)重新初始化之前,從文本欄中刪除(取消?)自動完成。

其中任何一個都可以做tbh,但選項a)更好。

任何想法的人?這裏是我當前的代碼:

function initSubjectLongShortList(field, short_values, long_values){ 
    $(".subject_short_long_list").change(function(){ 
    updateSubjectAutocomplete(field, short_values, long_values); 
    }); 
    updateSubjectAutocomplete(field, short_values, long_values); 
} 

function updateSubjectAutocomplete(field, short_values, long_values){ 
    if($(".subject_short_long_list:checked").attr('id') == "subject_long_list"){ 
    initSubjectAutocomplete(field, long_values); 
    } else { 
    initSubjectAutocomplete(field, short_values);  
    } 
} 

function initSubjectAutocomplete(field, values){ 
    jQuery(field).autocomplete(values, { 
    minChars: 0, //make it appear as soon as we click in the field 
    max: 2000, 
    scrollHeight: 400, 
    matchContains: true, 
    selectFirst: false 
    });  
} 

歡呼,最大

回答

3

它的完成這樣的,據我記得。

一)

$("#id").setOptions({ 
    data: array_goes_here 
}).flushCache(); 

B)

$("#id").unbind(); 

您可以選擇的方式。

+0

感謝nikita,一旦我將flushCache()部分從尾部移走,回答一次很好的工作。使用flushCache調用它在更改選項後完全停止工作。我確實讀過setOptions的api條目,但錯過了可以更改數據。在重新閱讀它時,它根本沒有列出數據作爲選項,它只是列出數據作爲第一個參數。再次感謝 - max – 2010-05-07 08:52:55

+0

順便說一句,我不一定認爲flushCache是​​'錯誤',我認爲它只是不適合我有自動完成設置的特定方式。 – 2010-05-07 08:58:52

相關問題