我正在尝试从 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"
) 并将其保存为多变的。我该怎么做?
最佳答案
HTML 不是这样的 <form>
作品。当您使用 <select>
在<form>
, 您必须指定 name
<select>
处的属性- 你做对了。你必须指定 value
<option>
的属性标签,不是 id
.您可以指定 id
属性(例如,如果您想通过其 id 引用标签),但这不是提交表单时发送的内容。
提交表单时,"key"="value"
将发送 <select>
对, 其中"key"
将是 name
的值<select>
的属性, 和 "value"
将是 value
的值<option>
的属性已选中。
您可以使用 Request.FormValue()
通过名称获取已提交表单字段的值,请注意,这也称为 Request.Parseform()
如有必要,您甚至可以省略该调用。
查看这个工作示例:
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"
时并提交,控制台显示:
2015/12/05 21:18:45 Selected film: 2
关于html - 通过 ParseForm() 检索表单选项 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108987/