【问题标题】:Clojure - Hiccup Dropdown menuClojure - 打嗝下拉菜单
【发布时间】:2017-05-18 08:18:00
【问题描述】:

我在 Hiccup 中有一个从数据库填充的 Clojure 表。在一列中,我有从数据库设置的状态。

我想要做的是能够点击这个值,然后出现一个下拉菜单,您可以从下拉菜单中选择一个新状态。

我对如何做到这一点感到困惑。我尝试使用带有占位符的表单,其中值来自数据库,但是当我单击浏览器中的状态时,我必须输入而不是下拉菜单。如何获得下拉菜单?

(defn row-data [data]
  (for [x data]
    (let [[entity-id id date text status] job]
      (hiccup/html
        [:tr
         [:td date]
         [:td id]
         [:td text]
         [:form {:method :post}
          [:td 
           [:input {:type :text :placeholder status}]]]
         ]))))

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 请添加您尝试过的代码

标签: clojure hiccup


【解决方案1】:

如果我理解您的任务,如果您不想在字段中输入内容,则无需使用 [:input]{:type :text}。 尝试改用(drop-down attr-map? name options)

https://weavejester.github.io/hiccup/hiccup.form.html

你也可以尝试让你的表单看起来像这样:

[:form {:action "/handler_name"}
 [:td
   [:select {:name (str "update_status_" id)}
    [:option {:value "1"} "1"]
    [:option {:value "2"} "2"]
    [:option {:value "3"} "3"]
    [:option {:value "4"} "4"]]
   [:input {:type "submit"} "Update"]]]

【讨论】:

    【解决方案2】:

    你需要一个像这样的向量:

     (def countries [["Mexico" 6]["Argentina" 5]
                     ["Chile" 3]["Colombia" 2]]) 
    

    所以:

      (:require
            [hiccup.core :as c]
            [hiccup.form :as f]
    
      [:div.div-separator (f/drop-down {:class "form-class"} "country_id" countries)]
    

    如果你有一张包含信息的地图,你可以使用 reduce 函数创建矢量:

    (let [my-vector (reduce #(conj %1 [(:name %2) (:id %2)]) [] my-big-map)])
    

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2020-08-11
      相关资源
      最近更新 更多