2015-10-06 30 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