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

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

Должен ли я вернуться к манипуляциям с DOM или есть какой-то Enhancement, который я могу использовать?


person Khanzor    schedule 08.10.2012    source источник


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

person Tarmil    schedule 08.10.2012
comment
Ваше решение работает как шарм. Чтобы найти кнопку отправки, вы можете расширить запрос: e.Find("input[type=button][class='submitButton']"). Однако, если использовался WithCustomSubmitButton, имя стиля может измениться. Я не настолько знаком с W#, чтобы сказать, как найти фактическое имя стиля в макете кнопки. - person bytebuster; 19.05.2013