Dear all,
Recently (and not only) there have been discussions about ajax forms
and their submit Scala functions not being called and that's because
JQuery's form serialization doesn't serialize the input submits (for
pertinent reasons). The workaround is as you know to use hidden
fields.
Adam also wanted an ajax form with multiple submit buttons taking
different actions depending on which button is being called. This is
also *doable* using hidden fields .... but not quite from elegant.
I've experimented a way to allow ajax form submission but after all
form field functions are being called your own ajax Scala function is
being called (with no hidden fields). the idea is this:
1. I added an SHtml.ajaxSubmit which has the same signature with
SHtml.submit
2. At js level I added a liftAjax.lift_uriSuffix
3. When clicking the ajaxSubmit button we set the
liftAjax.lift_uriSuffix with the function name value. This is the
function name of your scala function. Hence your scala function for
ajaxSubmit will be called after form field functions are called.
In short we "piggy back" the Scala function info on top of the
serialized form info.
I tested it and it works just fine for me:
Using it looks something like like:
ajaxForm(bind("hello", xhtml,
"field1" -> text("", (s) => {println("field1 = " + s)}),
"field2" -> text("", (s) => {println("field2 = " + s)}),
"field3" -> text("", (s) => {println("field3 = " + s)}),
"submit" -> ajaxSubmit("Press me", () => {
println("my ajax func called.")
Noop
}))
... you got the idea.
This of course allows putting virtually any number of ajax submit
buttons and the right function will be called on server side.
I'm thinking to add this to Lift but first I'd like to know your
thoughts.
Br's,
Marius
--
You received this message because you are subscribed to the Google Groups
"Lift" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/liftweb?hl=en.