forms - Clojure(打嗝): How can I know which submit button got pressed in a form?

标签 forms clojure hiccup

我有一个表格,使用 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/

相关文章:

java - 尝试编译 clojurescript 时出错

list - 我如何计算 Clojure 中的列表交集?

clojure - 如何将字符串解析为 Hiccup?

css - 使用 Clojure Hiccup 呈现样式信息的惯用方式

javascript - 缩短长目录

javascript - 防止输入设备提交 angularjs 表单

regex - HTML5 模式 - 不允许以下字符

javascript - 表单验证集自定义有效性

java - 给定任何 Java 编译程序,是否有可能在 Clojure 中编写字节码等效版本?

html - CSS 在不增加文本大小的情况下增加复选框大小