Отправить с помощью клавиши ввода

Есть ли какой-то идиоматический способ для меня инициировать действие отправки в моей формуле при нажатии события нажатия клавиши?

Должен ли я вернуться к манипулированию DOM, или есть некоторые Enhanceчто я могу использовать?

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, чтобы он фактически вызвал кнопку отправки.

Другие вопросы по тегам