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/