我有一个表格,使用 hiccup 框架。它看起来像这样:
(form-to {:enctype "multipart/form-data"}
[:post "/add-data"]
...
(submit-button {:class "btn"} "Save")
(submit-button {:class "btn} "Clone"))
在不使用 jQuery/javascript 的情况下,如何知道按下了哪个提交按钮?
我查看了关于
request
的 Hiccup 文档。 .但是,request
element 没有很多文档。
最佳答案
一个完整的例子如下所示:
(ns myapp.routes.home
(:use [hiccup core form])
(:require [compojure.core :refer :all]))
(defn quick-form [& [name message error]]
(html
(form-to {:enctype "multipart/form-data"}
[:post "/form-out"]
(text-field "Hello")
(submit-button {:class "btn" :name "submit"} "Save")
(submit-button {:class "btn" :name "submit"} "Clone"))))
请注意,对两个提交按钮使用相同的名称允许您在结果映射中对“提交”键进行简单的查找。
(defroutes home-routes
(GET "/form-in" [] (quick-form))
(POST "/form-out" [:as request] (str (request :multipart-params))))
打开以下页面时:
http://localhost:3000/form-in
并填写表格,POST路由的结果是:
{"submit" "Save", "Hello" "hello2"}
顺便说一句,我发现了一个关于 request map is structured 方式的旧有用帖子。在 Compojure 中,因此可以更轻松地在 Clojure 代码中对其进行解构。
关于forms - Clojure(打嗝): How can I know which submit button got pressed in a form?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27891597/