1 回答

TA貢獻1802條經(jīng)驗 獲得超6個贊
在更高級別上,您有 2 個選擇:
要么發(fā)送下拉列表的所有值(例如作為樹),并在更高級別的下拉列表更改時更改第 2 和第 3 級的值(適用于小列表,不適合大型數(shù)據(jù)集)
Or the one you chose: when selection changes, you make an AJAX call (triggered from
onchange
) and you populate the list from the results.
詳細說明 #2:從 AJAX 調(diào)用結(jié)果填充列表
您還有 2 個選項可以執(zhí)行此操作:
AJAX 調(diào)用返回 HTML 調(diào)用,您可以簡單地使用它來替換 HTML
<select>
標記的內(nèi)部 HTML 。或者 AJAX 調(diào)用可能只返回數(shù)據(jù)(例如使用 JSON 編碼),并且 Javascript 代碼可以構(gòu)建列表的內(nèi)容。
AJAX 返回 HTML
AJAX 調(diào)用可能會返回需要替換的完整 HTML 代碼作為<select>
. 為了在服務(wù)器端實現(xiàn)這一點,您可以創(chuàng)建/分離僅負責生成此 HTML 代碼的 HTML 模板,例如:
{{define "innerList"}}
{{range .}}
<option value="{{.Key}}">{{.Text}}</option>
{{end}}
{{end}}
您只能像這樣執(zhí)行此模板:
// tmpl is the collection of your templates
values := ... // Load/construct the values
tmpl.ExecuteTemplate(w, "innerList", values)
這values是以下結(jié)構(gòu)的一部分:
type Pair struct {
Key string
Text string
}
<select>使用 Javascript構(gòu)建內(nèi)容
AJAX 調(diào)用可能會返回一個 JSON 數(shù)據(jù)結(jié)構(gòu),value;text即您<option>自己添加子標簽的數(shù)組/對列表。
要將添加<option>到一個<select>標簽:
var x = document.getElementById("mySelect");
var option = document.createElement("option");
option.value = "1234";
option.text = "Kiwi";
x.add(option);
所以基本上你需要做的是刪除 的當前子項<select>,迭代作為響應(yīng)接收的列表,并添加一個<option>由每個子項構(gòu)造的新標簽。
- 1 回答
- 0 關(guān)注
- 291 瀏覽
添加回答
舉報