使用回车键提交

时间:2012-10-08 08:05:33

标签: f# websharper

当按下keydown事件时,是否有惯用的方法触发我的formlet的提交操作?

我应该退回到DOM操作,还是有一些我可以使用的Enhance

1 个答案:

答案 0 :(得分:4)

不幸的是,目前没有标准的方法可以做到这一点。我们打算在将来的版本中添加它,作为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选择器以使其实际触发提交按钮。