2011-05-23 56 views
0

請查看以下自動完成代碼。自動完成和jquery選擇器在運行時更改

$(document).ready(function(){ 
     $("#the_input").autocomplete("/autocomplete.php", { 
       //some options 
      extraParams: { 
       base: $('.selected_button').prev('input').val() //***             
        }, 
      formatItem: function(data, i, n, value) { 
       return value; 
      } 
     }); 
    }); 

「base」參數是我的問題(標有註釋的部分)。

我在頁面上有三個按鈕和三個隱藏的輸入字段。 最初,當頁面加載時,我將「selected_button」添加到其中一個按鈕。 我已經確認「base:」之後的jquery代碼可以用來訪問這個元素。 當用戶點擊其他按鈕之一時,我從所有按鈕中刪除「selected_button」類並將其添加到用戶單擊的按鈕上。

我想使用它來更改自動完成查找所使用的基礎文件夾。

問題是自動完成總是使用最初設置的路徑,無論我點擊哪個按鈕。 所以我認爲自動完成並不能識別我在運行時所做的類更改。

回答

1

您是否嘗試過一個包裹裏面的功能基本參數:

base: function() { return $('.selected_button').prev('input').val(); } 

該文檔似乎表明這是一個可能性。

+0

謝謝。那就是訣竅。 – reggie 2011-05-23 17:18:24

1

你需要改變時,可以選擇刪除selected_button:

$("#the_input").autocomplete("option", "extraParams", new_selected_value) 

從jQueryUI的資料爲準:

選項

.autocomplete("option" , optionName , [value]) 

獲取或者設置自動完成選項。如果沒有指定值,將作爲吸氣劑。