如何检测试剂中的 "Enter" 按键?

How To Detect "Enter" Keypress in Reagent?

给定以下代码:

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

如何更改 if 条件,以便将输入键与普通键区分开来? e 中除 target 之外的所有属性似乎都为空。

这就是解决方法:

  1. 你应该听 :on-key-press(而不是 :on-change), 因为 "enter" 不会触发 :on-change 事件(显然不会更改文本)
  2. "enter" 的密钥代码是 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")))}]
    

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