【问题标题】:Submit with enter key使用回车键提交
【发布时间】:2012-10-08 19:05:01
【问题描述】:

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

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

【问题讨论】:

    标签: f# websharper


    【解决方案1】:

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

    【讨论】:

    • 您的解决方案就像一个魅力。要查找提交按钮,您可以增强查询:e.Find("input[type=button][class='submitButton']")。但是,如果使用了WithCustomSubmitButton,则样式名称可能会有所不同。我不太熟悉 W# 来告诉如何在按钮布局中找到实际的样式名称。
    猜你喜欢
    • 2018-09-18
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    相关资源
    最近更新 更多