我正在尝试使用Noir编写一个简单的Web应用程序,该应用程序具有一系列内容更改的下拉菜单,具体取决于在上一个下拉菜单中选择的内容。然后将这些选项作为表单提交。虽然网上有很多关于如何使用直接javascript进行此操作的信息,但我更愿意坚持使用Clojure。我使用的是Noir 1.2.1和Hiccup 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可能是一个很好的候选人,但似乎它可能比我正在寻找的更多。我想我想要的是一个轻量级库,它可以生成一系列常见的Javascript任务,可以与Hiccup一起使用。
答案 0 :(得分:0)
我知道这很难看,但你可以用hiccup插入javascript作为字符串文字:
(hiccup.element/javascript-tag "alert(\"hello world\")")
但是为什么不写js ..