2016-07-17 99 views
1

我調整了onenter代碼todomvc example創建onShiftEnter,但它不起作用。顯然,shiftKey沒有傳遞給榆樹。那麼,我該如何檢測shift-Enter?如何檢測Elm中的shift-enter?

onShiftEnter : Msg -> Attribute Msg 
onShiftEnter msg = 
    let 
    tagger (code, shift) = 
     if code == 13 && shift then msg else NoOp 
    in 
    on "keydown" 
     (Json.Decode.map tagger 
      (Json.Decode.tuple2 (,) 
       (Json.Decode.at ["keyCode"] Json.Decode.int) 
       (Json.Decode.at ["shiftKey"] Json.Decode.bool) 
     ) 
     ) 
+0

不幸的不是。我現在編輯的問題使用shiftkey:仍然無法正常工作。 – user474491

回答

3

使用Json.Decoder.object2代替。 Json.Decoder.tuple2用於解碼數組。

import Json.Decode as Json exposing ((:=)) 

onShiftEnter : Msg -> Attribute Msg 
onShiftEnter msg = 
    let 
    tagger (code, shift) = 
     if code == 13 && shift then msg else NoOp 
    keyExtractor = 
     Json.object2 (,) 
     ("keyCode" := Json.int) 
     ("shiftKey" := Json.bool) 
    in 
    on "keydown" <| Json.map tagger keyExtractor