2015-10-06 83 views
8

考虑下面的代码:如何检测试剂中的“Enter”按键?

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

如何改变if条件,使输入按键可以从正常的按键区分开来?除target之外的e中的所有房产看起来都是空的。

回答

17

这就是如何解决它:

  1. 你应该听:on-key-press(而不是:on-change), 因为“输入”不会触发:on-change事件(这显然不改变文本)
  2. 对于 “输入” 键
  3. 代码为,不
  4. 使用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")))}] 
    
+2

谢谢,它的工作原理!你太棒了! –

+2

'charCode'已被弃用,'key'是[推荐](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent)。 – Bill

1

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