2016-07-17 3 views
1

todomvc exampleonenterコードをonShiftEnterに変更しましたが、機能しません。明らかに、shiftKeyは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

残念ながら。私は今シフトキーを使用する質問を編集しました。まだ動作しません。 – 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 
関連する問題