如何检测试剂中的 "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
之外的所有属性似乎都为空。
这就是解决方法:
- 你应该听
:on-key-press
(而不是 :on-change
),
因为 "enter" 不会触发 :on-change
事件(显然不会更改文本)
- "enter" 的密钥代码是 13,而不是 31
使用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
。
给定以下代码:
[:input {:type "text"
:value (:text @app-state)
:on-change (fn [e]
(if (= 31 (.-keyCode e))
(println "ENTER")
(println "NOT ENTER")))}]
如何更改 if
条件,以便将输入键与普通键区分开来? e
中除 target
之外的所有属性似乎都为空。
这就是解决方法:
- 你应该听
:on-key-press
(而不是:on-change
), 因为 "enter" 不会触发:on-change
事件(显然不会更改文本) - "enter" 的密钥代码是 13,而不是 31
使用
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
。