如何在试剂中检测“进入”Keypress?

问题描述 投票:10回答:2

给出以下代码:

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

如何更改if条件,以便输入按键可以区别于普通键? e中除target之外的所有属性似乎都是null。

clojurescript reagent
2个回答
19
投票

这是如何解决它:

  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")))}]

5
投票

随着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

© www.soinside.com 2019 - 2024. All rights reserved.