15

给定以下代码:

  [:input {:type "text"
           :value (:text @app-state)
           :on-change (fn [e]
                        (if (= 31 (.-keyCode e))
                          (println "ENTER")
                          (println "NOT ENTER")))}]

如何更改if条件以使输入按键与普通按键区分开来?e除了中的所有属性target似乎都是空的。

4

2 回答 2

22

这就是如何解决它:

  1. 你应该听:on-key-press(而不是:on-change),因为“输入”不会触发:on-change事件(它显然不会改变文本)
  2. “输入”的键码是13,而不是31
  3. 使用charCode而不是keyCode(不是 js 专家,但keyCode在 Firefox 中对我不起作用)

    [:input {:type "text"
             :value (:text @app-state)
             :on-key-press (fn [e]
                             (println "key press" (.-charCode e))
                             (if (= 13 (.-charCode e))
                               (println "ENTER")
                               (println "NOT ENTER")))}]
    
于 2015-10-06T12:10:33.890 回答
9

key.

[:input
 {:on-key-press
  (fn [e]
    (if (= (.-key e) "Enter")
      (.log js/console "Enter")
      (.log js/console "Not Enter")))}]

同样令人感兴趣的是:on-key-up:on-key-down

于 2017-12-29T16:41:47.177 回答