Есть ли идиоматический способ запуска действия отправки моего формлета при нажатии клавиши?
Должен ли я вернуться к манипуляциям с DOM или есть какой-то Enhance
ment, который я могу использовать?
Есть ли идиоматический способ запуска действия отправки моего формлета при нажатии клавиши?
Должен ли я вернуться к манипуляциям с DOM или есть какой-то Enhance
ment, который я могу использовать?
К сожалению, на данный момент нет стандартного способа сделать это. Однако мы намерены добавить его в будущей версии либо как комбинатор 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#, чтобы сказать, как найти фактическое имя стиля в макете кнопки.
- person bytebuster; 19.05.2013