Well it looks like you are submitting a non ajax form. You can easily
use ajax forms.
something like:
def calcForm(xhtml:NodeSeq):NodeSeq = {
SHtml.ajaxForm(Helpers.bind("f", xhtml,
"age" -> SHtml.text(ageVar.is.toString, v => ageVar(v.toInt)),
"male" -> SHtml.text(maleVar.is.toString, v =>
maleVar(v.toBoolean)),
"submit" -> SHtml.ajaxSubmit("Calculate", () => {
// return your JSCmd here
}),
"le" -> le.toString
))
On 26 feb., 18:58, sdillard <[email protected]> wrote:
> I am probably confused on what exactly is going on in the request /
> response cycle here, but I am trying to show a table cell after a
> calculation is performed, and I can't seem to get the js to run. The
> JS is being called in the showResults method that is bound to the
> submit action. I am guessing that the submit action is reloading the
> page, so there is no opportunity to run the js. Any suggestions on
> how I should be doing this instead? I am learning lift, and I am
> working on an app that needs to be completely stateless (no db
> backend, no cookies, no session).
>
> I have the following for my page:
>
> <lift:surround with="default" at="content">
> <table>
> <tbody>
> <tr>
> <td>
> <lift:mortality.calcForm form="POST" id="mortalityForm">
> Age: <f:age><input
> type="text"/></f:age><br/>
> Male: <f:male><input
> type="text"/></f:male><br/>
> <f:submit><input type="submit"
> value="calculate"/></f:submit>
> </lift:mortality.calcForm>
> </td>
> <td id="mortalityResult" style="display:none;" >
> <lift:mortality.doCalculate>
> Life Expectancy: <r:le>50</r:le>
> </lift:mortality.doCalculate>
> </td>
> </tr>
> </tbody>
> </table>
> </lift:surround>
>
> Then in my snippet code I have the following:
> class Mortality {
> object ageVar extends RequestVar[Int](S.param("age").map(_.toInt)
> openOr 0)
> object maleVar extends RequestVar[Boolean]
> (S.param("male").map(_.toBoolean) openOr false)
> var le = "0"
> def calculateLifeExp = {
> val calcLE = Annuity2000.lifeExpectancy(ageVar.is, maleVar.is)
> le = String.format("%.2f",double2Double(calcLE))
> }
> def doCalculate(xhtml:NodeSeq):NodeSeq = {
> calculateLifeExp
> Helpers.bind("r", xhtml,
> "le" -> le.toString
> )
> }
> def showResults():JsCmd = {
> JsCmds.Run("$('#mortalityResult').show();alert('I ran')")
> }
> def calcForm(xhtml:NodeSeq):NodeSeq = {
> Helpers.bind("f", xhtml,
> "age" -> SHtml.text(ageVar.is.toString, v => ageVar(v.toInt)),
> "male" -> SHtml.text(maleVar.is.toString, v =>
> maleVar(v.toBoolean)),
> "submit" -> SHtml.submit("Calculate", showResults),
> "le" -> le.toString
> )
> }
>
>
>
> }
--
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.