Elm - 防止默认订阅
Elm - prevent default with subscriptions
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
上下文: 我正在尝试开发一个文本区域编辑器(就像本页中允许您通过模态 window 插入链接和图像的编辑器)。
问题: 如果我在任何模式 windows 内的输入之一获得焦点时单击 Enter,则处方集将提交。如果这恰好是一个 onClick
事件处理程序(使用 onWithOptions
),我会知道如何解决它。但是在使用订阅的时候不知道怎么解决
E.onWithOptions
"keydown"
{stopPropagation = True, preventDefault = True}
(succeed NoOp)
这可以防止在添加到输入时进行隐式表单提交(必须是 "keydown",因为那是浏览器执行隐式提交的时候)
Edit1:还可以防止在输入中写入任何内容。天啊
Edit2:最终使用 form 属性将这些输入绑定到一个不存在的处方集中解决了这个问题:A.form ""
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
上下文: 我正在尝试开发一个文本区域编辑器(就像本页中允许您通过模态 window 插入链接和图像的编辑器)。
问题: 如果我在任何模式 windows 内的输入之一获得焦点时单击 Enter,则处方集将提交。如果这恰好是一个 onClick
事件处理程序(使用 onWithOptions
),我会知道如何解决它。但是在使用订阅的时候不知道怎么解决
E.onWithOptions
"keydown"
{stopPropagation = True, preventDefault = True}
(succeed NoOp)
这可以防止在添加到输入时进行隐式表单提交(必须是 "keydown",因为那是浏览器执行隐式提交的时候)
Edit1:还可以防止在输入中写入任何内容。天啊
Edit2:最终使用 form 属性将这些输入绑定到一个不存在的处方集中解决了这个问题:A.form ""