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

Mic*_*are 11 clojurescript reagent

给出以下代码:

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

如何更改if条件以便输入按键可以与普通键区分开来?e除了target似乎为null 之外的所有属性.

lee*_*ski 20

这是如何解决它:

  1. 你应该听:on-key-press(而不是:on-change),因为"输入"不会触发: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")))}]
    
    Run Code Online (Sandbox Code Playgroud)

  • `charCode`已被弃用,`key`是[推荐](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent). (4认同)
  • 谢谢,它的确有效!你真棒! (2认同)

dea*_*ost 5

随着key.

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

同样感兴趣的是:on-key-up和:on-key-down.

  • 这很棒,不知道`.-key`。你也可以使用 `js/console.log` 保存一个字符。:^) (2认同)