在Elm中使用preventDefault

时间:2016-08-11 23:32:59

标签: elm

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

url: http://example.com
description: I'm a description

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

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

3 个答案:

答案 0 :(得分:8)

了解如何使用Html.Events.on,然后就会变得明显。

myInput =
  input
    [ on "keydown" (Json.map KeyInput keyCode)]
    []

...变为

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

options =
  { stopPropagation = True
  , preventDefault = True
  }

(这里,消息构造函数KeyInput  定义为:type Msg = KeyInput Int

答案 1 :(得分:6)

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

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

答案 2 :(得分:1)

您现在可以使用库elm-community/html-extra,它为您提供onClickPreventDefaultonClickStopPropagation功能。