2016-07-17 15 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