使用Noir的Web应用程序:如何在不诉诸JavaScript的情况下显示依赖的下拉菜单

webapp using Noir: how to display dependent drop-down menus without resorting to javascript

本文关键字:JavaScript 情况下 显示 下拉菜单 依赖 Web Noir 应用程序 使用      更新时间:2023-09-26

我正在尝试使用 Noir 编写一个简单的 Web 应用程序,该应用程序具有一系列下拉菜单,其内容会根据上一个下拉菜单中选择的内容而变化。然后将这些选项作为表单提交。虽然网络上有很多关于如何使用直接JavaScript来做到这一点的信息,但我更愿意坚持使用Clojure。我正在使用黑色 1.2.1 和打嗝 0.3.6。

我目前的尝试看起来像这样(fh 是 hiccup.form-helpers:

(defpage "/run-experiment" []
  (common/layout 
    (fh/form-to [:post "/run-experiment"]
      (fh/label "dd1" "Drop Down 1:")
      (fh/drop-down :opts1 '(Opt1A Opt1B) 'Opt1A)
      (fh/label "dd2" "Drop Down 2:")
      (fh/drop-down :opts2 (cond (= 'Opt1A (get-opt1)) '(Opt2A1 Opt2A2)
                                 (= 'Opt1B (get-opt1)) '(Opt2B1 Opt2B2))))))

(而不是cond,我会用地图实现上述内容,但现在我认为这更清楚了)

我希望能够获取第一个下拉列表的选定元素的文本值,并根据该值显示第二个元素的html。我正在尝试弄清楚是否有办法使用 Hiccup,生成我需要添加到第一个下拉列表中的 onclick 参数所需的 Javascript。此外,我试图弄清楚是否有办法访问表单其他元素的 id 值,以便我可以在生成的 Javascript/HTML 中链接它们。理想情况下,我希望像Hiccup为HTML所做的那样,但对于Javascript。我认为Clojurescript可能是一个很好的候选者,但它似乎比我想要的要多。我认为我想要的是一个轻量级库,它可以生成可以与 Hiccup 结合使用的常见 Javascript 任务字符串。

我知道

这很丑陋,但是您可以使用打嗝将javascript作为字符串文字插入:

(hiccup.element/javascript-tag "alert('"hello world'")")

但是为什么不直接写js。

相关文章: