我已经改编了 todomvc example 中的 onenter
代码创建 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)
)
)
最佳答案
改用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
关于elm - 如何检测 Elm 中的 shift-enter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38418573/