我正在尝试从HTML表单下拉列表中获取选项值id。
假设我的HTML文件中有这些行:
<select name="film" id="films">
<option id="1">Godfather</option>
</select>
这在我的Go文件中:
func filmFunc(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
film_raw := r.Form["film"]
film := film_raw[0]
...
}
这将为我提供选项("Godfather"
)中的文本,但我需要获取选项id("1"
)并将其另存为变量。我该怎么办?
答案 0 :(得分:6)
这不是HTML <form>
的工作原理。当您在<form>
中使用<select>
时,您必须在name
指定<select>
属性 - 您这样做了。您必须为<option>
代码指定value
属性,不 id
。您也可以指定id
属性(例如,如果您想通过其ID引用标记),但这不是在提交表单时发送的内容。
提交表单后,我们会为"key"="value"
发送一个<select>
对,其中"key"
将是name
<select>
属性的值},"value"
将是所选value
的{{1}}属性的值。
您可以使用Request.FormValue()
按名称获取已提交表单字段的值,请注意,如果需要,这也会调用Request.Parseform()
,以便您甚至可以省略该调用。
请参阅此工作示例:
<option>
当您选择func formHandler(w http.ResponseWriter, r *http.Request) {
if selectedFilm := r.FormValue("film"); selectedFilm != "" {
log.Println("Selected film:", r.FormValue("film"))
}
w.Write([]byte(html))
}
func main() {
http.HandleFunc("/", formHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
const html = `<html><body>
<form method="POST" action="/">
<select name="film" id="films">
<option value="1">The Godfather</option>
<option value="2">The Godfather: Part II</option>
</select>
<input type="submit" value="Submit">
</form>
</body></html>`
并提交时,控制台会显示:
"The Godfather"
当您选择2015/12/05 21:18:42 Selected film: 1
并提交时,控制台会显示:
"The Godfather: Part II"