首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么知道哪个提交按钮在表单中被按下了?

我怎么知道哪个提交按钮在表单中被按下了?
EN

Stack Overflow用户
提问于 2015-01-11 20:15:06
回答 2查看 1.9K关注 0票数 4

我有一个表格,用的是hiccup框架。看起来是这样的:

代码语言:javascript
复制
(form-to {:enctype "multipart/form-data"}
  [:post "/add-data"]

  ...

  (submit-button {:class "btn"} "Save")
  (submit-button {:class "btn} "Clone"))

我如何知道没有使用jQuery/javascript就按下了哪个提交按钮?

我查看了request的Hiccup文档。但是,request元素没有太多的文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-13 01:00:52

完整的示例如下:

代码语言:javascript
复制
(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"))))

请注意,对两个submit按钮使用相同的名称可以让您对结果映射中的"submit“键进行简单查找。

代码语言:javascript
复制
(defroutes home-routes
 (GET "/form-in" [] (quick-form))
 (POST "/form-out" [:as request] (str (request :multipart-params))))

打开以下页面时:

代码语言:javascript
复制
 http://localhost:3000/form-in

填写表格后,邮寄路线的结果如下:

代码语言:javascript
复制
 {"submit" "Save", "Hello" "hello2"}

顺便说一句,我发现了一篇关于Compojure中的请求映射是结构化的方式的有用的老文章,因此它使在Clojure代码中对其进行重构变得更加容易。

票数 5
EN

Stack Overflow用户

发布于 2015-01-12 04:58:40

submit-button生成<input type="text" ...>元素。您可以向它们添加"name“和"value”属性:

代码语言:javascript
复制
(submit-button {:name "button" :value "save" :class "btn"} "Save")
(submit-button {:name "button" :value "clone" :class "btn"} "Clone")

并在服务器端代码中找到它。在您的例子中使用lib-noir。但是,最近版本的lib-noir不再提供用于销毁请求的实用程序,并鼓励人们使用其他库,如Compojure或bare。

基本上您需要:-确保服务器端应用程序使用wrap-params环型中间件--如果单击上面的“保存”按钮,[:post "/add-data"]的服务器端处理程序应该会收到如下所示的哈希图:

代码语言:javascript
复制
{:http-method :post
 :uri "/add-data"
 :form-params {"button" "save"
               ;; other form data as key/value pairs
               ;; where: key is input element's "name" attribute and value is input element's "value" attribute
               ...
               }
 ...}

我希望你能弄清楚如何在这样的地图中找到你所需要的价值。

更深入的阅读:

https://github.com/mmcgrana/ring/wiki/Parameters

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27891597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档