2010-04-24 76 views
2

下面的代碼工作正常使用jQuery UI 1.8和jQuery 1.4.2自動完成和動態參數傳遞

$("#sid_entry_box").autocomplete({ 
    source:"autocomplete_sid.php?database="+database_name, 
    minLength:4, 
    delay:1000, 
    enable:true, 
    cacheLength:1 
}); 

數據庫名稱爲PHP調用的GET參數傳遞。

在這個應用程序中,通過單選按鈕選擇了兩個數據庫。 由於jQuery在加載文檔時加載並分配了這個函數,數據庫名稱是在momemnt中檢查的任何內容。

我真正需要傳遞給PHP調用如下:

database=$("input[name=rf_database_option]:checked").val(); 

有一個易於理解的方式能夠通過動態DOM價值?

回答

1

這樣的事情?

function changeDB(database_name) { 
    $('#sid_entry_box').autocomplete('option', 'source', "autocomplete_sid.php?database="+database_name); 
} 
+0

我不想更改數據庫名稱來觸發自動完成。 我只是想讓我的自動完成功能在其中具有讀取rf_database_option並將其傳遞給php函數的函數。 目前,數據庫名稱作爲get參數傳遞,但只有在加載html頁面時纔會設置。 – sammy 2010-04-25 01:41:06

+0

它不會觸發但要更改database_name,因此您可以使用checkbox onchange事件,如: (「input [name = rf_database_option]」)。change(function(){ if($(this).is ':checked')){ changeDB($(this).val()); } – Puaka 2010-04-25 01:58:55

1

當單選按鈕改變,可以改變自動完成來源:

var database_name = ...; 
$("#sid_entry_box").setOptions({ 
    source:"autocomplete_sid.php?database="+database_name 
}); 

你可以看到的例子與setOptionsthis page(查看源)。

+0

我不明白這個實現是如何使用jQuery 1.4.2和UI-1.8的jquery自動完成功能的 必須更新數據庫名稱當sid_entry_box發生變化時 我將不得不更多地瞭解setOptions。 – sammy 2010-04-25 01:35:14

0

Puaka的解決方案有效。謝謝!

但是,在我看來,應該有自動完成的方式來讀取任何DOM值,然後將該參數傳遞給自動完成,然後傳遞給PHP獲取例程。

想象一下,如果需要從DOM中抓取10個不同的參數。對每個添加自動完成功能選項的10個回調函數進行修改都成爲一項挑戰。

希望來自jQuery的將來的文檔將展示更多使用自動完成各種選項的示例。