当按下 keydown 事件时,是否有一种惯用的方式触发我的 formlet 的提交操作?
我应该退回到 DOM 操作,还是有一些Enhance
我可以使用的方法?
不幸的是,目前没有标准的方法来做到这一点。不过,我们确实打算在未来的版本中添加它,作为Enhance
组合器或作为Enhance.WithCustomSubmit*
.
我们在创建FPish时实际上遇到了同样的问题,我们使用以下解决方法:
[<JavaScript>]
let TriggerOnEnter (formlet : Formlet<'T>) =
formlet
|> Formlet.MapElement (fun elem ->
let e = JQuery.JQuery.Of(elem.Body)
e.Keypress(fun _ k ->
// Opera uses charCode
if k?keyCode = 13 || k?charCode = 13 then
JavaScript.SetTimeout (fun _ ->
e.Find("input[type=button]").Trigger("click").Ignore
) 100 |> ignore
k.StopPropagation()
).Ignore
elem
)
请注意,它会触发表单中的第一个按钮,因此您可能需要调整 jQuery 选择器以使其真正触发提交按钮。