【发布时间】:2018-02-05 00:32:30
【问题描述】:
我有一个带有 HTML 表单(包含输入字段和提交按钮)的 Elm 应用程序,我想在输入无效时禁用它。当输入无效时,我设法通过将表单提交绑定到无操作消息来做到这一点:
type Msg
= Input String
| Submit
| Noop
viewForm : Model -> Html Msg
viewForm = form [ onSubmit (if model.valid then Submit else Noop) ]
[ input [ onInput Input ] []
, button [ disabled (not model.valid) ] [ "Submit" ]
]
update 然后对Noop 消息不执行任何操作。该按钮也被禁用,但这是次要的,因为我也关心通过从文本输入中按 Enter 来提交表单。请注意,跳过 onSubmit 处理程序不起作用,因为然后按 Enter 将重新加载页面。
这感觉有点混乱和低效,所以我的问题是:
- 在 Elm 中实现此目的的惯用方法是什么?
- 将无操作消息用于无操作 Javascript 事件处理程序的成本要高出多少。
【问题讨论】:
-
使用
disabled属性怎么样?button [disabled (not model.valid)] [ "Submit" ] -
@IgorDrozdov 禁用按钮似乎不会通过在输入字段中按 Enter 来禁用表单提交。
标签: html forms form-submit elm onsubmit