javascript - Elm - 防止默认订阅

标签 javascript elm

subscriptions : Model -> Sub Action
subscriptions model =
  let
    modalKeyUp m n = case n of
      13 -> Modal m Accept
      27 -> Modal m Close
      _  -> Modal m NoModalAction
    modalSub = case model.showModal of
      NoModal -> Sub.none
      m -> Keyboard.ups (modalKeyUp m)
  in
    modalSub

上下文:我正在尝试开发一个文本区域编辑器(如本页中允许您通过模态窗口插入链接和图像的编辑器)。

问题:如果我在任何模态窗口内的输入之一获得焦点时单击 Enter,则处方集将提交。如果这恰好是一个 onClick 事件处理程序(使用 onWithOptions),我会知道如何解决它。但是我不知道如何在使用订阅时解决它。

最佳答案

E.onWithOptions
    "keydown"
    {stopPropagation = True, preventDefault = True}
    (succeed NoOp)

这可以防止在添加到输入时进行隐式表单提交(必须是“keydown”,因为那是浏览器执行隐式提交的时候)

Edit1:也防止在输入中写入任何内容。天哪

Edit2:最终使用 form 属性将这些输入绑定(bind)到一个不存在的公式解决了这个问题:A.form ""

关于javascript - Elm - 防止默认订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51117523/

相关文章:

javascript - 如何在Parse上保存具有不同ACL的Parse对象的指针?

javascript - 404 未找到 Web API 路由

javascript - 禁用具有相同类属性但不同 ID 的多个按钮

functional-programming - Elm - 输入类型复选框

functional-programming - 如何与 Elm 中的多态子组件通信?

random - 在 Elm 中生成带有多个参数的消息的命令

Javascript 按引用传递还是按值传递?

javascript - Windows Phone 8 IE10 Javascript 调试

elm - 带有和不带有 (..) 的 Elm 中的模块导入

functional-programming - 如何在 Elm 0.15 中获得 keepWhen 行为?