我有一个使用HTML表单(包含输入字段和提交按钮)的Elm应用程序,我希望在输入无效时禁用它。我已经成功通过表单提交绑定到一个空操作消息,这样做,当输入无效:禁用无操作消息的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键将重新加载页面。
这种感觉有点乱,效率低下,所以我的问题是:
- 什么是惯用的方法在榆树实现这一目标?
- 使用无操作消息给无操作的Javascript事件处理函数要贵多少钱。
关于使用'disabled'属性是什么? '按钮[禁用(不是model.valid)] [“提交”]' –
@IgorDrozdov禁用按钮似乎没有通过在输入字段中按Enter来禁用表单提交。 – robx