在Elm中使用preventDefault

swe*_*let 7 elm

我如何在elm中使用preventDefault?在键盘事件上说:

keyDown keyCode model =
    case keyCode of

        13 -> -- Enter key
            model
Run Code Online (Sandbox Code Playgroud)

如果我们不想要默认行为?

Html.Events有它的方法,但我不明白如何在实践中使用它.

Tos*_*osh 8

学习如何使用Html.Events.on,然后它变得明显.

myInput =
  input
    [ on "keydown" (Json.map KeyInput keyCode)]
    []
Run Code Online (Sandbox Code Playgroud)

成为...

myInputWithOptions =
  input
    [ onWithOptions "keydown" options (Json.map KeyInput keyCode)]
    []

options =
  { stopPropagation = True
  , preventDefault = True
  }
Run Code Online (Sandbox Code Playgroud)

(在这里,消息的构造KeyInput 被定义为:type Msg = KeyInput Int)

  • 看来这在 elm 中已经不存在了。 (2认同)

Sør*_*ois 6

@Tosh已经展示了如何在他的答案中阻止事件传播并防止默认行为.

如果您的具体情况是仅在Enter上而不是在任何其他键上防止默认行为,那么目前在Elm中这是不可能的 - 您必须求助于Ports和JS.